Итерация по двум массивам одновременно с использованием для каждого цикла в 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];
}