java - 循环遍历ArrayList并仅打印具有特定属性的对象

标签 java if-statement for-loop arraylist

我有一个 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/

相关文章:

java - 如何使 JPanel 组件作为 JTree 中的节点可用?

java - 使用java反射在循环中调用编号的函数名称

python - 仅在满足 if 条件后才运行 for 循环

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

ios - “永远不会被执行”

python - 更高效的代码(看似太多的 if 语句)

c++ - C++中的if语句

javascript - 如何使用 JavaScript 和 canvas arc() 方法更改重叠圆的大小?

c++ - C++中的数组乘法

java - Redis Replication和Cluster区别