2016-04-07 148 views
0

我需要创建一个2d数组,它可以读入50个学生的学生ID和他们的7个主题标记。我想出了一种存储学科标记的方法,但不知道如何存储学生标识。 这是迄今为止的代码。填充2D阵列Java

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

你不能使用'Collections'? –

+1

@Jordi Castilla也许他不知道如何? –

+1

或者也许使用对象?你的目标是什么? – Century

回答

1

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

两个简单的选项

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

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

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

注:

  • 如果您不能修改原始数组或者你需要存储学生的名字,例如,你可以创建一个新的数组存储学生身份证。

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

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

你在正确的轨道上。

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

另外,为什么在数组中有7列,只有两个主题等级循环?这里有更多要做吗?如果不避免使用空间。

+0

我只是两次循环,以便更容易地看到发生了什么,而不必经过50名学生和7个科目。 – theghid