みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

配列のファイルへの出力について

fortranでできるファイルへの配列の出力をJAVAでどのようにプログラムするか教えて頂きたいと思います。
2次元配列a(i,j)の出力はfortranでは以下のようなプログラムになります。
open(10,.省略...) ファイルを指定して開く
do j=1,ny                ループj  
write(10,'(100f10.3)') (a(i,j),i=1,nx) ループi+書き出し
enddo                  ループjの最後尾 
close(10)                ファイルを閉じる

100f10.3というのは小数点3桁の実数で10カラムで表現したものが100個並ぶという意味です。これと同じことをやるJAVAプログラムを教えて頂きたいのですが。私の手元にある本にはやり方が載っていません。
JAVAにはfortranのような数字のカラムを指定するようなフォーマットの調整などできるのでしょうか。よろしくお願いします。

この質問は、C言語について以前質問したものですQNo.3590702。
JAVAだったらどうなるだろうと思ってお尋ねしています。

投稿日時 - 2007-12-14 14:43:06

QNo.3597762

困ってます

質問者が選んだベストアンサー

Javaでは例外処理などの決まりがあるため複雑になります。
処理の部分だけ抜き出すと次のような記述になります。
(例外処理やmainメソッドなどは省略)

final int nx=10;
final int ny=10;
double a[][]=new double[nx][ny];

PrintWriter pw=new PrintWriter("out.txt");
for(int i=0;i<nx;i++){
for(int j=0;j<ny;j++){
pw.printf("%10.3f",a[i][j]);
}
}
pw.close();

%10.3fというのがフォーマットの指定です。

投稿日時 - 2007-12-14 16:33:18

お礼

有難うございました。
for(int i=0;i<nx;i++){
for(int j=0;j<ny;j++){
pw.printf("%10.3f",a[i][j]);
}
}
括弧が入れ子になっており、内側のループjでは10.3fのフォーマットで
横方向にずらっと数字が並び、外側のループiではそれが改行されるという風に理解しましたが。

投稿日時 - 2007-12-18 22:50:02

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1です
#1では10x10の2次元配列を出力する例です。

>外側のループiではそれが改行される
#1の記述では改行はしていません。1行に100個のデータが並びます。
必要であれば「pw.println();」を挿入することで、改行を出力する
ことができます

投稿日時 - 2007-12-19 14:31:25

あなたにオススメの質問