使用Java中的每个循环同时迭代两个数组

Tan*_*nay 6 java foreach

学生的名字(String [])和相应的标记(int [])存储在不同的数组中.

我如何使用Java中的每个循环迭代两个数组?

void list() {

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

一个简单的方法可能是在同一个循环中使用索引变量.有好办法吗?

das*_*ght 10

您需要使用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]);
}
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用课程将学生与他/她的分数一起存储,如下所示:

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());
}
Run Code Online (Sandbox Code Playgroud)


Old*_*eon 7

实际上,潜在的问题是你应该将两个数组绑定在一起并迭代一个数组.

这是一个非常简单的演示 - 你应该使用getter和setter,你也应该使用a List而不是数组,但这证明了这一点:

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

for (Student s : students) {
  ...
}
Run Code Online (Sandbox Code Playgroud)