2009-11-25 4 views
-1

J'ai une table. Dans la première colonne. J'ai des noms d'étudiants, tels que "Esfandyar Talebi" et "Arash Nouri"; le nombre de rangées peut être changé. Seulement 2 lignes sont remplies à partir de 4 lignes.Pourquoi ce code génère-t-il une sortie inattendue?

Le code que je l'ai écrit:

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()); 
} 

Mais c'est la sortie:

[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]

null

+0

Est-ce que InformationTable.getRowCount() == 6? –

+0

non cette table a seulement 4 lignes. – Johanna

Répondre

1

Apparemment, vos InformationTable.getValueAt(i, 0) retours null pour certaines valeurs de i. Vous devrez regarder votre TableModel

1

Il y a probablement 6 lignes dans InformationTable. Vous avez sans doute d'abord vérifier wether la cellule a été remplie d'un nom:

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()); 
1

Il n'y a rien d'étrange avec la boucle vous mis en ligne ... Il fonctionne autant de fois que la valeur de retour de la méthode InformationTable.getRowCount() , qui semble être six. Donc, le problème est probablement sur la classe InformationTable, vous devrez peut-être l'afficher si vous avez besoin d'aide supplémentaire.