我正在尝试创建一个名为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());
}
答案 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