- 締切済み
ファイルから多次元配列への読み込み
はじめまして。 ここ最近、業務の都合でjava(正確には主にJSP)を描いています。 プログラムの作成は、シェルスクリプトを少し書く程度でまったく無いに等しい状態のなか、悪戦苦闘しております。 今回は、表題にもありますとおり、カンマ区切りファイルから多次元(2次元)配列に値を入れた意のですが、なかなか上手くいかないので、皆様のお知恵を拝借できればと思い、質問いたしまた。 私が書いたコードは、 String tmp; FileReader fr = new FileReader(application.getRealPath("./a.list")); BufferedReader br = new BufferedReader(fr); //1.リストの行数を取る ArrayList list = new ArrayList(); while (br.ready()) { tmp = br.readLine(); list.add(tmp); } int i = list.size(); //2.リストから読み込んだ値を取り合えず配列に入れてみる。 String strHex [][] = new String [i][3]; String strs2 [] = new String [i]; for ( int jj = 0; jj < i; jj++){ strs2[jj] = (String)list.get(jj); StringTokenizer st2 = new StringTokenizer(strs2[jj],","); int xyz = 0; while (st2.hasMoreTokens()) { strHex [jj][xyz] = (String)st2.nextToken(); xyz++; } } とやってみたのですが、xyzが配列の範囲を超えてアクセスしているという配列使用時はお決まりといわれるエラーが出てしまいます。 xyzは0で初期化した上で、トークンの数だけしか処理を行わないはずなので、わけがわからず途方にくれています。 なお、リストファイルの形式は、4列で行数は不定です。 例) 1,2,3b,4c 5,6,7d,8d 11,12,13,14 ・ ・ 見ないな感じです。 以上、お分かりになる方がいらっしゃいましたら、ヒントだけでもよろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
String strHex [][] = new String [i][3]; はあってる? 実は new String [i][4] だったりしない?
お礼
むむむ。。。。 ありがとうございます。3秒で解決しました。 配列の要素を指定するときは0から始まるので、0,1,2,3と数えていました。 半日悩んでいたのですが。。。 ありがとうございました。精進します。