填充2D数组Java

时间:2016-04-07 14:44:20

标签: java arrays for-loop multidimensional-array

我需要创建一个二维数组,它可以读取学生ID中的50个学生和他们的7个主题标记。我想出了一种存储主题标记的方法,但不知道如何存储学生ID。 这是迄今为止的代码。

public static void main(String[] args) 
{
    double mark;
    double[][] studs = new double[50][7];

    Scanner fromKeyboard = new Scanner(System.in);

    for (int studentNo = 0; studentNo < 3; studentNo++) {
        System.out.println("enter student ID number for student " + studentNo);

        for (int moduleNo = 0; moduleNo < 2; moduleNo++) {
            System.out.println("Enter users mark for module " + moduleNo);
            mark = fromKeyboard.nextDouble();
            studs[studentNo][moduleNo] = mark;
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您只有一个单一基本类型的数组,但您有两条信息。

两个简单的选项是

1)使用另一个数组来存储ID

2)(更好的解决方案IMO)创建自己的Student类,并定义一个数组Student[](学生应该包含一个标记数组的字段)

答案 1 :(得分:1)

您可以使用array [n] [0]存储学生ID。

这应该有效:

public static void main(String[] args) 
{
    double mark = 0d;
    int id = 0;
    double[][] studs = new double[50][8];

    Scanner fromKeyboard = new Scanner(System.in);

    for (int studentNo = 0; studentNo < 50; studentNo++) {
        System.out.print("enter student ID number for student " + (studentNo + 1) + ":");
        id = fromKeyboard.nextInt();
        studs[studentNo][0] = id;
        for (int moduleNo = 1; moduleNo < 8; moduleNo++) {
            System.out.print("Enter mark of student " + id + " for module " + moduleNo);
            mark = fromKeyboard.nextDouble();
            studs[studentNo][moduleNo] = mark;
        }
    }

    fromKeyboard.close();
}

注意:

  • 如果您无法修改原始数组或者您需要存储学生名称,例如,您可以创建一个新数组来存储学生ID。

    String[] studentsId = new String[50];
    int[] studentsId = new int[50];
    
  • 请记住在使用资源时关闭资源:fromKeyboard.close();

答案 2 :(得分:0)

当我理解你的问题时:

public static void main(String[] args) 
{
    double[][] studs = new double[50][8];

    Scanner fromKeyboard = new Scanner(System.in);

for (int studentNo = 0; studentNo < 50; studentNo++) {
    System.out.println("enter student ID number for student " + studentNo);
    studs[studentNo][0] = fromKeyboard.nextDouble(); //save id
    for (int moduleNo = 1; moduleNo < 8; moduleNo++) {  
        System.out.println("Enter users mark for module " + moduleNo);
        studs[studentNo][moduleNo] = fromKeyboard.nextDouble(); // your 7 marks
    }
}
}

答案 3 :(得分:0)

你走在正确的轨道上。

您没有阅读studentNo输入。所以你需要阅读它并将它放在内循环之前的第一个单元格中。然后将所有标记放在同一行旁边。这取决于学生ID的类型,是字符串还是数字?

另外,为什么数组中有7列,只有两次主题等级?还有更多事要做吗?如果不能避免占用空间。