- ベストアンサー
Javaのファイル操作
Javaで下のような数値ファイルを読み込んで, 2 3 3 1 2 5 2 2 2 3 4 3 2 4 1 4 数値をそのまま,二次元配列に入れ込みたいと思います。どのようにすればよいでしょう? 一次元配列までの読み込みと配列の入れ込みはできたのですが・・・。 どなたかご教授よろしくお願いします。 既出でしたら申し訳ありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
BufferedReader reader = null; String strArray[][] = new String[4][4]; String fileName = "foo.txt"; int i = 0; int j = 0; try { reader = new BufferedReader ( new FileReader(fileName) ); String line; while ( (line = reader.readLine() ) != null ) { // 指定文字で区切って返してくれるクラス StringTokenizer st = new StringTokenizer ( line ); while ( st.hasMoreTokens() ) { strArray[i][j] = st.nextToken(); // 直前に代入した配列内容を表示 System.out.print ( strArray[i][j] + " " ); j ++; } // 横のindexをリセット j = 0; // 縦のindexを次に i ++; // 1行ごと改行 System.out.println (""); } } catch ( Exception e ) { System.out.println ( e.toString() ); } } ---------------------------------------------------------- 代入した時点で標準出力に表示を行うコードを追加してみました。 これで確認してみて下さい。 これでもnullが表示されるようでしたら、ファイルから読み込んだ時点での文字列を表示してみる等して どこでうまく読み込めていないかデバッグを行ってみてください。
その他の回答 (1)
- LancerVII
- ベストアンサー率51% (1060/2054)
1次元配列までは出来たということなので、 ファイルを一行ごと読み込むループの中に 横の数値を入れるループを組んでみたらいかがでしょうか? ----------------------------------------------------------------------- BufferedReader reader = null; String strArray[][] = new String[4][4]; String fileName = "foo.txt"; int i = 0; int j = 0; try { reader = new BufferedReader ( new FileReader(fileName) ); String line; while ( (line = reader.readLine() ) != null ) { // 指定文字で区切って返してくれるクラス StringTokenizer st = new StringTokenizer ( line ); while ( st.hasMoreTokens() ) { strArray[i][j] = st.nextToken(); j ++; } // 横のindexをリセット j = 0; // 縦のindexを次に i ++; } } catch ( Exception e ) { System.out.println ( e.toString() ); } ----------------------------------------------------------------------- 上の状態だと配列の数(ファイルの中の数値)は固定になってます。 Java内で使用する型はとりあえずStringにしてあります。 型変換は必要に応じて処理してください。 他にも方法あるかも知れませんがとりあえず思いつきました。
お礼
返事が遅くなり大変申し訳ありません。 丁寧な回答どうもありがとうございました。 Javaにこのようなクラスがあったとは知りませんでした。大変勉強になりました。 もう一度質問させてください。 配列の確認をしたくて、最後に System.out.println(strArray[i][j]); と入力してコンパイルして実行したところ、 値がnullとでてくるのですが・・・。 これは配列にちゃんと入っていないということでしょうか?
お礼
できました!本当にどうもありがとうございました。 また機会があればよろしくお願いします。