7

学生的姓名(String[])和对应的分数(int[])存储在不同的数组中。

如何在 Java 中使用 for each loop 一起迭代两个数组?

void list() {

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

一种简单的方法是在同一个循环中使用索引变量。有什么好办法吗?

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

根本问题实际上是您应该将两个数组绑定在一起并只遍历一个数组。

这是一个非常简单的演示 - 您应该使用 getter 和 setter,还应该使用 aList而不是数组,但这说明了这一点:

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

for (Student s : students) {
  ...
}
于 2013-10-11T13:09:52.137 回答
4

如果它们的大小相同,我会写:

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

}
于 2013-10-11T12:59:21.183 回答
0

另一种方法是使用冗长的 for 循环语句,例如;

int i,j;
for(i = 0, j=0; i<= student.length-1 && j <=grades.length-1; i++,j++)
{
...
}
于 2018-10-11T21:30:54.670 回答