Итерация по двум массивам одновременно с использованием для каждого цикла в Java

имена студентов (String []) и соответствующие метки(int[]) хранятся в разных массивах.

Как я могу перебирать оба массива вместе, используя для каждого цикла в Java ?

void list() {

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

один тривиальный способ может использовать переменную индекса в том же цикле. Есть ли хороший способ сделать это?

3 ответов


основная проблема заключается в том, что вы должны связать оба массива вместе и перебирать только один массив.

вот очень упрощенная демонстрация - вы должны использовать геттеры и сеттеры, а также использовать List вместо массива, но это показывает точки:

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

for (Student s : students) {
  ...
}

вам нужно сделать это, используя обычный 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());
}

если они оба имеют одинаковый размер, я бы написал:

for(int i = 0; i<marks.length; i++) {
    String names= studentNames[i]
    int mark = marks[i];     

}