搜索人物姓名的二维数组和人物数字数据Java的平均值

时间:2016-11-03 18:45:22

标签: java arrays database search multidimensional-array

我有一个适合学生姓名和成绩的数据库。数据存储在二维对象数组中。(这是一项要求)每个学生都有自己的行,其中存储了5个数据,第一列包含人名和接下来的4列包含4个不同的考试成绩。用户可以输入和添加数据。我能够很好地添加和显示数据,但我遇到的问题是计算平均值。

用户应该能够输入名称并搜索数据库以查看该人员是否存在。如果那个人在数据库中,我必须显示该人的测试平均值。这应该在我的studentAverage按钮被按下时发生。我无法弄清楚如何搜索这个人,之后如何计算他们的平均值,有人可以帮助我吗?

我假设我必须使用Object类型的二维数组,因为字符串和double值都必须进入它。

public class StudentGrades extends javax.swing.JFrame {
    final int STUDENTS = 14;
    final int GRADES = 4;
    Object[][] database = new Object[STUDENTS][GRADES + 1];
    int studentCount = 0;

...

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                      
    //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());
    String name = firstInput.getText() + " " + lastInput.getText() + ":";

    if (grade1 >= 0 & grade1 <= 100 & grade2 >= 0 & grade2 <= 100 & grade3 >= 0 & grade3 <= 100 & grade4 >= 0 & grade4 <= 100){           
        //add data
        database[studentCount][0] = name;
        database[studentCount][1] = grade1; 
        database[studentCount][2] = grade2;
        database[studentCount][3] = grade3;
        database[studentCount][4] = grade4;

        //add to student count
        studentCount = studentCount + 1;

        //limit number of students
        if (studentCount == 15){
            addButton.setEnabled(false);
        }
    }  
    else {
        errorLabel.setText("Please Enter Valid Data.");
    }   
}                                         

1 个答案:

答案 0 :(得分:0)

您使用Object[][]作为数据库的要求确实阻碍了清晰的编程。它根本不是面向对象的方法。 (你确定你不应该使用一维学生对象吗?)

但是,考虑到您使用的二维Object数组,您可以通过将其与每个database[i][0]列进行比较来搜索给定的学生名称,并将每个名称转换为String类型首先,循环遍历整个数组,直到找到匹配的名称。

要计算database[i]学生的平均成绩,您只需将其他列添加到一起,将每个列投放到double,然后除以成绩数。

使用Object类型存储名称和数字会强制您将它们转换回原始类型,然后才能对它们执行任何操作(比较和算术)。