プロが教える店舗&オフィスのセキュリティ対策術

フォートランでxxxというファイルを読み込んで配列aに入れるプログラムは以下の様です。

ファイル xxxの中身

2.0 3.0 1.0 -2.0
1.3 1.2 1.9 -1.9
3.2 1.1 0.4 1.4

プログラムの対応箇所

nx=4
ny=3
open(10,file='xxx')
do j=ny,1,-1
read(10,*) (a(i,j),i=1,nx)
enddo
close(10)

これと同等の機能となるjavaプログラムはどうなるでしょうか。
javaによる並びによる配列への入力ということですが。

A 回答 (2件)

説明が足りなかったですね、すみません。



String.Split にすれば一行が一次元配列に分割されて取得できるということで。
で、昔のCならば一度最後まで全部レコードを読み込んで何レコードあるか数えて
配列確保、その後また最初から読み直すみたいなブサイクなことをしてましたけど、

C#やjava ならば ArrayList とかで ArrayList の最後にその場でどんどん継ぎ足していくみたいなこともできますし、
1次元配列への変換も1行でできます。
ただ、昔やったことがありますが、2次元配列への一発変換もできたような。ないかも。
#MatLab ではできたりします。
そこは私はC++/C#の人間なんでJAVAは勝手が悪くてすみません。

ただ、 JAVA の場合、今後業務システム云々に絡んでくる話だと、
夜間バッチが間に合わないとかいってパフォーマンスチューニングが必要になる場合があります。

そういうときは最初に説明した「読み直し」の方が速い場合はあります。
ケースバイケースです。
読み直してもメインメモリのディスクキャッシュに入っているはず(あくまでもはず)ですんで、それほど「激遅」にならない場合「も」あるので、敢えて「ブサイク」なことをしたりします。

この際両方のやり方を覚えておいたほうが将来的に役に立つと思います。

私もまだまだ勉強中なのでお互いがんばりましょー!
    • good
    • 0

貧乏じーさんプログラマです。



一行ずつ読み込んで空白で String.Split する。
二重ループにして配列に入れる。

そんなところでしょうか。
    • good
    • 0
この回答へのお礼

有難うございます。
1レコード読み込んで、ぶつ切りにしていくということですね。
何個あるとか、何レコードあるとかは気にする必要があるでしょうか。
サンプルがあると大変ありがたいですが。

お礼日時:2016/10/05 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!