繁体   English   中英

填充2D数组Java

[英]Populating a 2D Array Java

我需要创建一个二维数组,该数组可以读取50个学生的学生证及其7个学科标记中的每一个。 我想出了一种存储主题标记的方法,但不确定如何存储学生证。 这是到目前为止的代码。

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;
        }
    }
}

您只有一个原始类型的数组,但是有两条信息。

两个简单的选择是

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

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

您可以使用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();

当我正确理解您的问题时:

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
    }
}
}

您走在正确的轨道上。

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

此外,为什么数组中有7列,而学科成绩却只循环两次? 还有更多要做的事吗? 如果没有,请避免占用空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM