学生的姓名(String [])和相应的标记(int [])存储在不同的数组中。
如何使用Java中的每个循环迭代两个数组?
void list() {
for(String s:studentNames) {
System.out.println(s); //I want to print from marks[] alongside.
}
}
一个简单的方法可能是在同一个循环中使用索引变量。有好办法吗?
答案 0 :(得分: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]);
}
更好的方法是使用课程将学生与他/她的分数一起存储,如下所示:
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());
}
答案 1 :(得分:7)
实际上,潜在的问题是你应该将两个数组绑定在一起并迭代一个数组。
这是一个非常简单的演示 - 你应该使用getter和setter,你也应该使用List
而不是数组,但这证明了这一点:
class Student {
String name;
int mark;
}
Student[] students = new Student[10];
for (Student s : students) {
...
}
答案 2 :(得分:4)
如果两者的大小相同,我会写:
for(int i = 0; i<marks.length; i++) {
String names= studentNames[i]
int mark = marks[i];
}
答案 3 :(得分:0)
另一种方法是对循环语句使用冗长的内容,例如;
int i,j;
for(i = 0, j=0; i<= student.length-1 && j <=grades.length-1; i++,j++)
{
...
}