好的,这将是一个列出学生姓名和考试成绩的程序。我已经弄清楚了,但只有一件小事。我必须列出学生姓名的行...然后允许我将另一个学生添加到列表中,而不会重复完全相同的姓名。(见标有 1 和 2 的行)
第一行从 firstNameField 和 lastNameField 中收集教师将输入的姓名……第二行将“上升一个”作为数组,以确保在添加另一个学生时名称不会重复。
不幸的是......每次添加另一个学生时,它看起来有点像这样......
例子:
简·杜努尔 65 76 45 89 简·杜努尔 65 87 45 76 约翰·史密斯努尔 65 76 45 89
你可以清楚地看到问题......“null”在那里,加上重复第二个名字(Jane Doe)
那么我应该怎么做才能防止这种情况发生呢?
公共类 StudentGradesView 扩展 FrameView {
int [][] aryStudent = new int [15][4]; //number of student (15) test scores (4 scores)
String[][] aryNames = new String[15][2]; //lists the names of students
int numOfStudents = 0; //starts off students from zero...
int marks = 0;
int test1;
int test2;
int test3;
int test4;
public StudentGradesView(SingleFrameApplication app) {
//图形界面的东西...
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String currentList = studentListField.getText();
//Collects integers from test1Field though test4Field
aryStudent[numOfStudents][0] = Integer.parseInt(test1Field.getText());
aryStudent[numOfStudents][1] = Integer.parseInt(test2Field.getText());
aryStudent[numOfStudents][2] = Integer.parseInt(test3Field.getText());
aryStudent[numOfStudents][3] = Integer.parseInt(test4Field.getText());
StringBuilder sb = new StringBuilder();
for (int x=0; x <= numOfStudents && x<15; x++) {
sb.append(firstNameField.getText()).append(" ").append(lastNameField.getText()); //(1)
sb.append(aryNames[x][0]); //(2)
for (int y=0; y < 4; y++) {
sb.append(" ").append(aryStudent[x][y]);
studentListField.setText(sb.toString() + "\n" + currentList);
}
sb.append("\n");
}
numOfStudents ++;
}
添加: 所以它看起来 "sb.append(aryNames[x][0]); //(2)" 没有什么意义,没有它没有名称重复,除非它输出为...示例
玛丽·琼斯 56 76 56 87 约翰·史密斯 45 45 45 45 约翰·史密斯 45 45 45 45
因此,它重复添加了两次的第二个名称。