我有一个ArrayList:
ArrayList<Student> studentList = new ArrayList<Student>();
从文本文件填充,每个对象包含五条信息。
其中一条信息是“等级”。我想打印特定年级的所有学生。我目前的方法只显示该年级的学生的第一个实例。用“[]”围绕那一个。
public ArrayList<Student> studentInGrade(String category) {
ArrayList<Student> gradeCategory = new ArrayList<Student>();
for (Student stu : studentList ) {
if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
System.out.println("Found");
gradeCategory .add(stu );
return gradeCategory ;
}
}
System.out.println("No Category Found");
return null;
}
示例:
我希望看到所有“初级”的学生。
示例输入:
Johnny Johns
Computer Science
Junior
21
In-State
Asheley Ashers
Nursing
Sophomore
20
In-State
Andrew Anders
Basket Weaving
Graduate Student
18
Out-State
Morgan Freeman
Theater
Junior
21
In-State
我想输出的内容:
Johnny Johns
Computer Science
Junior
21
In-State
Morgan Freeman
Theater
Junior
21
In-State
目前的产出是什么:
[Johnny Johns
Computer Science
Junior
21
In-State]
答案 0 :(得分:4)
当你返回时,会打破你的for循环。为了吸引所有学生,您必须遍历整个列表并在之后返回结果。
尝试将其放在循环之后:
public ArrayList<Student> studentInGrade(String category) {
ArrayList<Student> gradeCategory = new ArrayList<Student>();
for (DVD stu : studentList ) {
if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
System.out.println("Found");
gradeCategory .add(dvdEntry);
}
}
return gradeCategory;
}
答案 1 :(得分:1)
您似乎遗漏了很多相关代码。然而,似乎潜在的问题是你在找到一场比赛后立即返回,而不是收集所有比赛。只需将你的回报移到循环之外:
ArrayList<Student> gradeCategory = new ArrayList<Student>();
for (DVD stu : studentList ) {
if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
System.out.println("Found");
gradeCategory .add(dvdEntry);
}
}
return catDVD;
答案 2 :(得分:1)
循环中的return
结束方法,改为在循环中使用break
或continue
。
public ArrayList<Student> studentInGrade(String category) {
ArrayList<Student> gradeCategory = new ArrayList<Student>();
for (Student stu : studentList ) {
if (stu.GetCategory().toUpperCase().contains(category.toUpperCase())) {
System.out.println("Found");
gradeCategory .add(stu );
}
}
if (gradeCategory.size() > 0)
return gradeCategory;
else {
System.out.println("No Category Found");
return null;
}
}