1

私はファイルからこのサンプルリストを持っています

firstname, lastname, age
anne, smith, 6
dougie, miller, 8

今、私はarraylistにこだわっています

ArrayList<String[]> rows = new ArrayList<>();
     while ((line = reader.readLine()) != null) {
        String[] row = line.split(",");
        rows.add(row);
    }

    for (String[] row : rows) {
        System.out.println(Arrays.toString(row));
    }

そして、私はこれらの出力を得ました:

[firstname,lastname,age]
[anne,smith,6]
[dougie,miller,8]

私はこれを使ってみました:

String[] x1 = new String[rows.size()+1];
     for(int i=0;i<rows.size();i++){
     String[] lastname = (String[]) rows.get(i+1);
        System.out.println(lastname[1]);
        //x1[i]=lastname[1];
     }

しかし、姓を1つの配列に入れることができなかったようです。それは私にこのエラーを与えるでしょう:

スレッド「AWT-EventQueue-0」の例外 java.lang.IndexOutOfBoundsException: インデックス: 227、サイズ: 227

私はこの出力が欲しい:

ファーストネーム
アン
ドギー

苗字
スミス
ミラー

年
6
8

それ、どうやったら出来るの?

4

2 に答える 2

0

を使用して、より簡単なソリューションを使用することを考えましたScanner

File file = new File(filePath);
try {
    Scanner content = new Scanner(file).useDelimiter("\n");
    while (content.hasNext()) {
        String[] line = content.next().split(",\\s");
        for (String s : line) {
            System.out.println(s);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}
于 2013-01-19T19:05:19.977 に答える
0

StringArrays がすべて同じサイズである場合、これは正常に機能するはずです。

int cols = rows.size() > 0 ? rows.get(0).length : 0;
for (int i = 0; i < cols; i++) {
  for (int j = 0; j < rows.size(); j++) {
    System.out.println(rows.get(j)[i]);
  }
}
于 2013-01-20T00:49:04.537 に答える