填充2D数组Java

填充2D数组Java,java,arrays,for-loop,multidimensional-array,Java,Arrays,For Loop,Multidimensional Array,我需要创建一个2d数组,可以读取50名学生的学生ID和他们的7个科目分数。我想出了一种存储科目分数的方法,但不确定如何存储学生ID。 这是到目前为止的代码 public static void main(String[] args) { double mark; double[][] studs = new double[50][7]; Scanner fromKeyboard = new Scanner(System.in); for (int stude

我需要创建一个2d数组,可以读取50名学生的学生ID和他们的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;
        }
    }
}
publicstaticvoidmain(字符串[]args)
{
双标记;
双[]螺柱=新双[50][7];
扫描仪fromKeyboard=新扫描仪(System.in);
for(int studentNo=0;studentNo<3;studentNo++){
System.out.println(“为学生输入学生ID号”+学生编号);
for(int moduleNo=0;moduleNo<2;moduleNo++){
System.out.println(“为模块输入用户标记”+moduleNo);
mark=fromKeyboard.nextDouble();
螺柱【学生编号】【模块编号】=标记;
}
}
}

一个基元类型只有一个数组,但有两条信息

有两个简单的选择

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


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

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

有两个简单的选择

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


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

您可以使用数组[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();
}
  • 请记住在使用时关闭资源:
    fromKeyboard.close()


  • 您可以使用数组[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();
    }
    
  • 请记住在使用时关闭资源:
    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
          }
      }
      }
      
      publicstaticvoidmain(字符串[]args)
      {
      双[]螺柱=新双[50][8];
      扫描仪fromKeyboard=新扫描仪(System.in);
      for(int studentNo=0;studentNo<50;studentNo++){
      System.out.println(“为学生输入学生ID号”+学生编号);
      studs[studentNo][0]=来自键盘。nextDouble();//保存id
      对于(int moduleNo=1;moduleNo<8;moduleNo++){
      System.out.println(“为模块输入用户标记”+moduleNo);
      studs[studentNo][moduleNo]=来自keyboard.nextDouble();//你的7分
      }
      }
      }
      
      当我正确理解你的问题时:

      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
          }
      }
      }
      
      publicstaticvoidmain(字符串[]args)
      {
      双[]螺柱=新双[50][8];
      扫描仪fromKeyboard=新扫描仪(System.in);
      for(int studentNo=0;studentNo<50;studentNo++){
      System.out.println(“为学生输入学生ID号”+学生编号);
      studs[studentNo][0]=来自键盘。nextDouble();//保存id
      对于(int moduleNo=1;moduleNo<8;moduleNo++){
      System.out.println(“为模块输入用户标记”+moduleNo);
      studs[studentNo][moduleNo]=来自keyboard.nextDouble();//你的7分
      }
      }
      }
      
      你走对了方向

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


      另外,为什么数组中有7列,而主题分数只循环两次?这里还有更多的事情要做。如果没有,请避免占用空间。

      您走的是正确的道路

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


      另外,为什么数组中有7列,而主题分数只循环两次?这里还有更多的事情要做。如果没有,请避免使用空间。

      你不能使用
      集合吗?@Jordi Castilla可能他不知道如何使用?或者可能使用对象?你的id和分数目标是什么?@NikolasCharalambidis dunno,这就是我为什么要问的原因,因为这似乎是一个家庭作业和
      家庭作业=有限的资源
      最好的方法是创建一个拥有“id”和“分数[]”作为其成员的班级“学生”。然后你可以用这50个学生对象做任何事情。你不能使用
      集合吗?@Jordi Castilla可能他不知道怎么做?或者可能使用对象?你的id和分数目标是什么?@NikolasCharalambidis dunno,这就是我为什么要问的原因,因为这似乎是一个家庭作业和
      家庭作业=有限的资源
      最好的方法是创建一个拥有“id”和“分数[]”作为其成员的班级“学生”。然后你可以对这50个学生对象做任何事情。我只循环了两次,以便更容易地看到正在发生的事情,而不必经过50个学生和7个科目。我只循环了两次,以便更容易地看到正在发生的事情,而不必经过50个学生和7个科目。