2016-04-19 7 views
0

Ich arbeite gerade an einer Art Zensurprogramm. Der Benutzer gibt den Namen eines Schülers und die Noten, die er in 4 Tests erhalten hat, in ein 2D-Array ein. Wenn ich auf die Schaltfläche "Student Average" klicke, um die Durchschnittsnote dieses Studenten zu ermitteln, möchte ich, dass die Student-Info und dann der Durchschnitt eine Zeile danach gedruckt wird. Aber die Ausgabe, die jetzt im Bild gezeigt wird, fügt ungefähr 15 zusätzliche Zeilen hinzu, bevor der Durchschnitt angezeigt wird.JTextArea fügt Zeilen in der for-Schleife hinzu, wie kann dies verhindert werden?

enter image description here

Ich bin mir nicht sicher, was in meinem Code geschieht, das ist der Grund dafür, aber ich werde die actionPerformed-Code des Studenten Durchschnitts- Knopf befestigen. Dieser Code ist, wo alles geht:

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

Ich empfehle dringend, einen Blick auf [Wie verwendet man Tabellen] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) – MadProgrammer

Antwort

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

ich die Variable lastNameInput.getText() hat Müll erraten würde.

Sie können dies leicht testen, indem Sie das Hinzufügen eines:

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

Auch wenn das nicht das Problem ist, müssen Sie Debug-Code hinzuzufügen, um den Wert des Textbereichs Sie jedes Mal/set anhängen anzuzeigen Text es. Dann können Sie feststellen, welche Aussage das Problem verursacht.