如何将数据添加到二维数组?

时间:2016-10-31 19:07:54

标签: java arrays multidimensional-array

我必须创建一个程序,使用二维数组来存储学生姓名及其成绩。用户输入学生姓名和成绩,然后应该添加。它必须能够为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());

User Interface

3 个答案:

答案 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);
 }
}