• ベストアンサー

Javaのファイル操作

Javaで下のような数値ファイルを読み込んで, 2 3 3 1 2 5 2 2 2 3 4 3 2 4 1 4 数値をそのまま,二次元配列に入れ込みたいと思います。どのようにすればよいでしょう? 一次元配列までの読み込みと配列の入れ込みはできたのですが・・・。 どなたかご教授よろしくお願いします。 既出でしたら申し訳ありません。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.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が表示されるようでしたら、ファイルから読み込んだ時点での文字列を表示してみる等して どこでうまく読み込めていないかデバッグを行ってみてください。

pippijp
質問者

お礼

できました!本当にどうもありがとうございました。 また機会があればよろしくお願いします。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

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にしてあります。 型変換は必要に応じて処理してください。 他にも方法あるかも知れませんがとりあえず思いつきました。

pippijp
質問者

お礼

返事が遅くなり大変申し訳ありません。 丁寧な回答どうもありがとうございました。 Javaにこのようなクラスがあったとは知りませんでした。大変勉強になりました。 もう一度質問させてください。 配列の確認をしたくて、最後に System.out.println(strArray[i][j]); と入力してコンパイルして実行したところ、 値がnullとでてくるのですが・・・。 これは配列にちゃんと入っていないということでしょうか?

関連するQ&A