2010-12-02 12 views
0

数字の単一の垂直ファイルを含むファイルから読み込み、(JTextFieldで構成された)行列を埋めていますが、setメソッドを試してみると、プログラムは変更後に例外をスローします。第二列ファイルからの読み取りを試みています。

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

何例外あなたが見ていると、あなたは、スタックトレースを提供することができます。 –

+4

rafとは何ですか?私は何ですか?マトリックスは何ですか?もう少し多くのコードやスタックトレースが役に立つでしょう... – Fortega

+0

解決済み!問題は、2番目の "for"が終了した直後にraf.close()を実行していたことでした。 – Crox

答えて

2

にあなたは、おそらくWIDTHHEIGHTのためのいくつかの適切な値を使用して、より下の例のような何かをしたいです。

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

解決済み!問題は、2番目の "for"が終了した直後にraf.close()を実行していたことでした。 – Crox

2

GUIクラスからファイルを読み取るべきではありません。テキストファイルを読むための専用のクラスを作成して、懸念を分かち合いましょう。おそらく、あなたのファイルリーダークラスがIterator<String>の行を返すようにしてください。ここで単体テストでファイルリーダークラスをテストし、行が正しく表示されていることを確認します。実際に間違っているものを見つけるために非常に簡単になります

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

その方法:

は、このような何かを行います。

推奨読む:Coupling and Cohesion: The Two Cornerstones of OO Programming

+0

+1結束に関する優れた点。ディメンションメタデータはデータ自体の近くにとどまるべきです。 – trashgod

+1

解決済み!問題は、2番目の "for"が終了した直後にraf.close()を実行していたことでした。 – Crox

関連する問題