2010-12-02 24 views
0

Im essayant de lire d'un fichier contenant un seul fichier vertical de nombres, et remplissant une matrice (qui est composée par JTextField s) avec eux, mais quand j'essaie la méthode set, le programme jette une exception après avoir changé à la deuxième rangéeEssayer de lire à partir d'un fichier. Lève une exception

for(int a=0; a < i; a++) { 
    for(int b=0; b < i; b++){ 
     // x = raf.readLine(); 
     matrix[a][b].setText(raf.readLine()); 
    } 
} 
+10

Quelle exception voyez-vous et pouvez-vous fournir une trace de la pile. –

+4

qu'est-ce que raf? qu'est-ce que je suis? qu'est-ce que la matrice? Un peu plus de code et/ou un stacktrace serait utile ... – Fortega

+0

Résolu! Le problème était que je faisais raf.close() juste après le second "pour" fini. – Crox

Répondre

2

Vous voulez sans doute quelque chose de plus comme dans l'exemple ci-dessous, en utilisant des valeurs appropriées pour WIDTH et HEIGHT.

for (int row = 0; row < HEIGHT; row++) { 
    for (int col = 0 ; col < WIDTH; col++) { 
     matrix[row][col].setText(raf.readLine()); 
    } 
} 
+0

Résolu! Le problème était que je faisais raf.close() juste après le second "pour" fini. – Crox

2

Vous ne devriez pas lire un fichier d'une classe d'interface graphique. Essayez de séparer les problèmes en créant une classe dédiée pour lire le fichier texte. Peut-être laisser votre classe de lecteur de fichiers retourner un Iterator<String> de lignes. Maintenant, testez votre classe de lecteur de fichiers dans un test unitaire et assurez-vous qu'il affiche correctement les lignes.

faire quelque chose comme ceci:

Iterator<String> lines = yourHelperClass.getLines() 
for(int a=0; a < i; a++) { 
    for(int b=0; b < i; b++){ 
     if(!lines.hasNext()){ 
      // not enough lines, probably throw an Exception here 
     } 
     matrix[a][b].setText(lines.next()); 
    } 
} 

De cette façon, il sera beaucoup plus facile de savoir ce qui se passe réellement mal.

Recommandé lire: Coupling and Cohesion: The Two Cornerstones of OO Programming

+0

+1 Excellent point sur la cohésion. Les métadonnées de dimension doivent rester à proximité des données elles-mêmes. – trashgod

+1

Résolu! Le problème était que je faisais raf.close() juste après le second "pour" fini. – Crox