我必须创建一个程序,使用二维数组来存储学生姓名及其成绩。用户输入学生姓名和成绩,然后应该添加。它必须能够为15名学生保存数据。有人能告诉我如何将数据添加到这样的数组?到目前为止,我已经附加了我的代码,以及我的设计预览。
public class StudentGrades extends javax.swing.JFrame {
double [][] database = new double[4][15];
/**
* Creates new form StudentGrades
*/
public StudentGrades() {
initComponents();
displayButton.setEnabled(false);
studentButton.setEnabled(false);
courseButton.setEnabled(false);
}
...
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
//set code to close program
System.exit(0);
}
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
//clear output area
outputArea.setText(null);
//enable buttons
displayButton.setEnabled(true);
studentButton.setEnabled(true);
courseButton.setEnabled(true);
//declare variables
double grade1 = Double.parseDouble(test1.getText());
double grade2 = Double.parseDouble(test2.getText());
double grade3 = Double.parseDouble(test3.getText());
double grade4 = Double.parseDouble(test4.getText());
答案 0 :(得分:0)
将任何数据添加到二维数组中都基于行和列:
表示大小为NXN的二维数组:
database[0]; // Related to the first row in the array
database[0][0]; // Is the top left cell in the array.
database[N-1] // Related to the last array row
database[N-1][N-1] // Is the down right cell in the array.
如果您希望为第二个学生将数字3添加到数组中,您应该将成绩插入:
database[1][2]
为什么呢? 因为数组中的计数是零,因此第二个学生数据保存在
中database[1] // The second array row.
第一年级应保存在第0栏:
database[1][0]
第二年级应保存在第1栏:
database[1][1]
第三年级应保存在第2栏:
database[1][2]
这里有一个非常有用的link related to grades 2d-arrays。
提示最佳做法:
使用二维数组时,最好将数组中的数字作为具有含义的静态最终名称。而不是:
double [][] database = new double[4][15];
例如,您可以尝试以下语法:
private static final Integer NUM_OF_STUDENTS = 4
private static final Integer NUM_OF_TESTS = 15
double [][] database = new double[NUM_OF_STUDENTS][NUM_OF_TESTS];
答案 1 :(得分:0)
这就是二维数组的样子:
所以,根据我的理解,这就是你应该如何声明你的二维数组:
double [][] database = new double[15][5];
这意味着有15行(15名学生)和5列(1列用于存储名称,另外4列用于存储该学生的成绩)。现在,您需要一种方法将名称和等级存储在同一个数组中。因此,唯一可以做到的就是将数组的类型声明为Object
。
Object [][] database = new Object[15][5];
对象可以包含任何类型的数据。这是一个例子:
database[0][0] = "jon skeet";
database[0][1] = 4.0; // grade in double type... you can also keep it as String
database[0][2] = 4.0;
database[0][3] = 4.0;
database[0][4] = 4.0;
如果不要求2d数组,那么我建议您使用HashMap或其他。
答案 2 :(得分:0)
在该类中创建一个Class Student,放入一个Notes数组,然后在StudenGrade类中创建一个Student数组
class Student {
int []grades;
String name;
public Student(String name, int NGrades){
this.name = name
grades = new int[NGrades];
}
public void setGrade(int index, int grade){
grade[index] = grade;
}
public int getGrade(int index){
return grade[index];
}
public String getName(){
return name;
}
}
class StudentGrades {
Student students[];
public StudentGrades(int NStudents, int NGrades){
students = new Student[NStudents];
String names[] = {"Bob","Pete","Rafi","Roff"};
for(int i=0;i<NStudents;i++){
students[i] = new Studen(names[i],NGrades);
}
}