将用户值添加到二维数组

时间:2018-04-01 20:40:05

标签: java arrays

我正在尝试创建一个名为Student Grades的程序,该程序模拟一个有15名学生的成绩簿,每个学生有4个考试成绩。我必须使用二维数组来存储我的数据。我需要格式化我的数据,如“Jeremy Folson,85,99,33,44”。我在将不同的学生添加到我的阵列并正确显示时遇到了麻烦。我知道我的添加功能不起作用,因为将添加相同的数据15次。有人可以解释如何让我的代码执行所需的任务吗?

// Declare two-dimensional array
Object [][] grades = new Object [15][5]; 

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

//Clear output area
txtaDisplay.setText(null);

// Declare variables
String firstName, lastName, name; 
int test1, test2, test3, test4;

firstName = txtFirstName.getText();
lastName = txtLastName.getText();
name = firstName + " " + lastName;

test1 = Integer.parseInt(txtTest1.getText());
test2 = Integer.parseInt(txtTest2.getText());
test3 = Integer.parseInt(txtTest3.getText());
test4 = Integer.parseInt(txtTest4.getText());

for(int i = 0; i < 15 ; i++){
    grades[i][0] = name;
    grades[i][1] = test1;
    grades[i][2] = test2;
    grades[i][3] = test3;
    grades[i][4] = test4;
    }
    }                                      

public void displayArray() {

StringBuilder sb = new StringBuilder();
for (int row = 0; row < 15; row++) {
    for( int col=0; col < 5; col++) {
        sb.append(String.valueOf(grades[row][col]));
        sb.append(", ");
    }
    sb.append("\n");
}
txtaDisplay.append(sb.toString());
} 

1 个答案:

答案 0 :(得分:0)

首先,应该改进仅包含Object的数据结构。初稿将是:

class StudentEntry
{
    String name;
    Integer[] grade = new Integer[4];
}

List<StudentEntry> gradBook = new ArrayList<>();

你的主要问题是为什么输入相同的组合15次。这是因为您只读取了firstName的输入,然后将其在for循环中分配给每一行。 我们没有看到btnAddActionPerformed何时被称为两种可能性:

一个。每次输入学生时都会调用:只需创建一个新的StudentEntry并将其添加到gradBook(或者如果您使用数组:保留一个计数器已经添加了多少学生,例如{{ 1}})。

湾仅在输入所有学生记录时调用:使用for循环并读取 in 循环中的下一个学生数据:

static int