2016-04-19 4 views
0

私は現在、グレードブックの種類のプログラムに取り組んでいます。ユーザーは、学生の名前とそれらが4つのテストで得たマークを入力し、次にそれを2D配列に入力します。その学生の平均印を決定するために「Student Average」ボタンをクリックすると、それは学生情報を印刷してから、その次の行の平均を求めます。しかし、写真に示されている出力は、平均が表示される前に約15行の余分な行が追加されます。JTextAreaはforループで行を追加し続けますが、これを防ぐ方法はありますか?

enter image description here

は、私はこれを引き起こしている私のコードで何が起こっているのかわからないんだけど、私は学生の平均値ボタンのactionPerformedのコードを添付します。

private void studentAveragesButtonActionPerformed(java.awt.event.ActionEvent evt) { 

    int sum = 0; 
    int studentAverage = 0; 

    studentName = lastNameInput.getText() + " " + firstNameInput.getText(); 

    for (int row = 0; row < studentMarks.length; row++) { 
     for (int col = 0; col < studentMarks[0].length; col++) { 
      if (studentMarks[row][col] != null) { 
       studentMarkScreen.setText(studentMarkScreen.getText() + " " + String.valueOf(studentMarks[row][col])); 
       if (studentMarks[row][col].equals(studentName)) { 
        if (studentMarks[row][0].length() > 3) { 
         for (col = 1; col < studentMarks[0].length; col++) { 
          sum += Integer.parseInt(studentMarks[row][col]); 
         } 
        } 
       } 
      } else { 
       continue; 
      } 
     } 
    } 
    studentAverage = sum/4; 
    studentMarkScreen.append("\n"); 
    studentMarkScreen.append("The overall average for " + studentName + " is " + studentAverage + "%."); 

}

+0

[テーブルの使い方](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)をご覧になることを強くおすすめします。 – MadProgrammer

答えて

1
studentName = lastNameInput.getText() + " " + firstNameInput.getText(); 

を私はゴミを持ってlastNameInput.getText()変数を推測する:このコードは、すべての魔法が起こる場所です。それはあなたがにテキストを/追加設定するたびに、テキストエリアの値を表示するには、デバッグコードを追加する必要が問題ではありません場合でも

System.out.println("(" + lastNameInput.getText() + ")"); 

あなたは簡単に追加することでこれをテストすることができますそれ。次に、問題の原因となっているステートメントを判別できます。

関連する問題