7

生徒の名前 (String[]) と対応するマーク (int[]) は別の配列に格納されます。

Java で for each ループを使用して、両方の配列を一緒に反復するにはどうすればよいですか?

void list() {

    for(String s:studentNames) {
        System.out.println(s); //I want to print from marks[] alongside.
    }
}

単純な方法の 1 つは、同じループ内でインデックス変数を使用することです。良い方法はありますか?

4

4 に答える 4

14

for次のように、インデックスを使用して通常のループを使用して実行する必要があります。

if (marks.length != studentNames.length) {
    ... // Something is wrong!
}
// This assumes that studentNames and marks have identical lengths
for (int i = 0 ; i != marks.length ; i++) {
    System.out.println(studentNames[i]);
    System.out.println(marks[i]);
}

より良いアプローチは、次のように、クラスを使用して生徒をマークとともに保存することです。

class StudentMark {
    private String name;
    private int mark;
    public StudentMark(String n, int m) {name=n; mark=m; }
    public String getName() {return name;}
    public int getMark() {return mark;}
}

for (StudentMark sm : arrayOfStudentsAndTheirMarks) {
    System.out.println(sm.getName());
    System.out.println(sm.getMark());
}
于 2013-10-11T12:58:13.897 に答える
8

根本的な問題は、実際には、両方の配列を結び付けて、1 つの配列だけを反復処理する必要があることです。

これは非常に単純化されたデモンストレーションです。ゲッターとセッターを使用する必要がListあり、配列の代わりに a も使用する必要がありますが、これはポイントを示しています。

class Student {
  String name;
  int mark;
}
Student[] students = new Student[10];

for (Student s : students) {
  ...
}
于 2013-10-11T13:09:52.137 に答える