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];
     }

但我似乎无法将姓氏放在一个数组中。它会给我这个错误:

线程“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 回答