有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJTextArea不断在for循环中添加行,如何防止这种情况?

我目前正在做一个类似成绩册的项目。用户输入一个学生的名字和他们在4次测试中得到的分数,然后将其转换为2D数组。当我点击“学生平均分”按钮确定所述学生的平均分时,我希望它打印学生信息,然后打印一行平均分。但是现在的输出,如图所示,在显示平均值之前增加了大约15行

enter image description here

我不确定我的代码中发生了什么导致了这种情况,但我将附加Student Averages按钮的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 + "%.");

}


共 (1) 个答案

  1. # 1 楼答案

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

    我猜变量lastNameInput.getText()有垃圾

    您可以通过添加一个:

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

    即使这不是问题所在,也需要添加调试代码,以便在每次设置/追加文本时显示文本区域的值。然后,您可以确定导致问题的语句