为什么此代码会产生意外输出?

时间:2009-11-25 12:42:16

标签: java jtable

我有一张桌子。在第一列。我有学生的名字,比如“Esfandyar Talebi”和“Arash Nouri”;行数可以更改。 只有2行从4行填充。

我写的代码:

List<String> professorsName = new ArrayList<String>();
for(int i = 0; i < InformationTable.getRowCount(); i++) {
    professorsName.add((String) InformationTable.getValueAt(i, 0));
    System.out.println(professorsName.toString());
}

但这是输出:

  

[Esfandyar Talebi]

     

[Esfandyar Talebi,Arash Nouri]

     

[Esfandyar Talebi,Arash Nouri,null]

     

[Esfandyar Talebi,Arash Nouri,null,null]

     

[Esfandyar Talebi,Arash Nouri,null,null,null]

     

[Esfandyar Talebi,Arash Nouri,null,null,null,null]

     

3 个答案:

答案 0 :(得分:1)

显然,InformationTable.getValueAt(i, 0)null的某些值返回i。你必须看看你的TableModel

答案 1 :(得分:1)

InformationTable中可能有6行。您可能首先必须检查单元格中是否填充了名称:

List<String> professorsNames = new ArrayList<String>();
for(int i = 0; i < InformationTable.getRowCount(); i++) {
    String name = (String) InformationTable.getValueAt(i, 0);
    if (name != null && name.trim().length() != 0) {
        professorsNames.add(name);
        System.out.println("Adding: " + name);
    } else {
        System.out.println("Refusing: " + name);
    }
}

System.out.println("Found: " + professorsNames.toString());

答案 2 :(得分:1)

你发布的循环没有什么奇怪的...它运行的次数与InformationTable.getRowCount()方法返回的值一样多,看起来是6。所以问题可能出在InformationTable类上,如果需要进一步的帮助,可能需要发布它。