2016-04-07 18 views
0

生徒IDが50人で、7つの主題マークを読み取ることができる2次元配列を作成する必要があります。私は、件名を保存する方法を考え出しましたが、学生IDの保存方法はわかりません。 ここまではコードです。2次元配列を取り込む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

オブジェクトを使用しているのでしょうか? IDとマークであなたの目標は何ですか? – Century

答えて

1

単一のプリミティブ型の配列は1つのみですが、2つの情報があります。

2つの単純なオプションが

1です)(学生がフィールドが含まれている必要があり、独自のStudentクラスを作成し、配列Student[]を定義)IMO()のID

2を格納するためのよりよい解決策を別の配列を使用します

1

学生IDを格納するのにarray [n] [0]を使うことができます。

これは動作するはずです:

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

NOTES:

  • あなたが元の配列を変更することはできませんか、あなたが学生の名前を格納する必要がある場合、たとえば、あなたが新しい配列を作成することができます学生のようにIDを格納する。

    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

あなたは正しい軌道に乗っています。

あなたはstudentNo入力を読んでいません。だからあなたはそれを読んで内側のループの前の最初のセルに配置する必要があります。次に、すべてのマークを同じ行の横に並べます。これは生徒IDの種類によって異なりますが、それは文字列か数字ですか?

また、なぜアレイに7つの列があり、対象の等級に対して2回だけループするのですか?ここでもっとやるべきことがありますか?スペースを使い切ってはいけません。

+0

何が起こっているのかを見やすくし、50人の学生と7人の科目を通過する必要がないように、私は2回だけループしていました。 – theghid