2013-01-19 36 views
1

我有这个样本列表从文件从一个ArrayList

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

我想有这样的输出:

firstname 
anne 
dougie 

lastname 
smith 
miller 

age 
6 
8 

我该怎么做?

+1

你说你没有得到输出,但是你向我们展示了你的输出。你也谈论'ArrayList',但是你的代码中没有。你能澄清你的问题吗? – jlordo

+0

你想arraylist或文件读取和输出?或者你想从文件中读取文件并初始化数组列表? –

+0

'ArrayList'在哪里?我正在寻找... – Parth

回答

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]); 
    } 
} 
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(); 
} 
相关问题