2016-04-07 144 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