我有一个 ArrayList,其中填充了 Result 类的对象。每个结果都有一个名为“类别”的属性。
我正在尝试使用 for 循环创建方法,该方法使用用户输入的类别打印出每个结果。
目前,for 循环可以工作,但分隔是否打印结果的 if 语句不起作用,这就是我正在寻找帮助的内容。
我认为单独的 if 语句目前不起作用,因为我尝试了所有其他代码。
String categoryToPrint;
System.out.println("Which category would you like to print out results for?");
categoryToPrint = scanner.nextLine();
categoryToPrint = normalisera(grenAttVisa); //method making all letters small and first letter capital.
System.out.println("Resultlist for" + categoryToPrint );
for (int i = 0; i < resultlist.size(); i++) {
Athlete matched = null;
Result res = resultlist.get(i);
if (res.categoryName().equals(categoryToPrint)) {
for (int x = 0; x < resultlist.size(); x++) {
Athlete del = athletes.get(x);
if (res.athleteStartNumber() == del.startNumber()) {
matched = del;
break;
}
}
System.out.println(matched.surName() + " " + matched.lastName() + " has the result: " + res.categoryValue());
}
}
最佳答案
改变
for (int x = 0; x < resultlist.size(); x++)
至
for (int x = 0; x < athletes.size(); x++)
让我们考虑一下这种情况:
resultlist = [result1, result2, result3] // size() == 3
athletes = [athlete1, athlete2] // size() == 2
依赖于您的实际代码:
for (int i = 0; i < resultlist.size(); i++) {
for (int x = 0; x < resultlist.size(); x++) {
Athlete del = athletes.get(x);
...
以下是外循环第一次迭代中内循环的情况:
resultlist.size() == 3
i == 0, x == 0 ====> Athlete del = athletes.get(0); // x < 3, good
i == 0, x == 1 ====> Athlete del = athletes.get(1); // x < 3, good
i == 0, x == 2 ====> Athlete del = athletes.get(2); // x < 3, good but the athletes arraylist has only 2 elements, Exception raised
关于java - 循环遍历ArrayList并仅打印具有特定属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34575812/