簡體   English   中英

使用Java中的每個循環同時迭代兩個數組

[英]Iterating over two arrays simultaneously using for each loop in Java

學生的名字(String [])和相應的標記(int [])存儲在不同的數組中。

我如何使用Java中的每個循環迭代兩個數組?

void list() {

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

一個簡單的方法可能是在同一個循環中使用索引變量。 有好辦法嗎?

您需要使用帶索引的常規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());
}

實際上,潛在的問題是你應該將兩個數組綁定在一起並迭代一個數組。

這是一個非常簡單的演示 - 你應該使用getter和setter,你也應該使用List而不是數組,但這證明了這一點:

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

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

如果他們都有相同的大小,我會寫:

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

}

另一種方法是使用詳細的for循環語句,如;

int i,j;
for(i = 0, j=0; i<= student.length-1 && j <=grades.length-1; i++,j++)
{
...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM