无法为每个循环使用整数类型

Not able to use Integer type in for each loop

这是一个 returns 整数 ArrayList 的方法:

public List<Integer> primeFactors() {
        List<Integer> primeFactors = new ArrayList<Integer>();
        if (num == 1) return primeFactors;
        for (int i = 2; i * i <= num; i++) {
            while (num % i == 0) {
                primeFactors.add(i);
                num = num / i;
            }
        }
        if (num > 1) {
            primeFactors.add(num);
        }
        return primeFactors;
    }

这里是调用方法的代码:

List primeFactors = prime.primeFactors();
        StringBuilder sb = new StringBuilder();
        for (Integer i: primeFactors) {
            sb.append(String.valueOf(primeFactors.get(i)));
            sb.append(" ");
        }

但它不起作用。它在行 for (Integer i: primeFactors)

中显示“不兼容的类型。找到:'java.lang.Integer',需要:'java.lang.Object'”

我不知道这里发生了什么,因为当我使用没有从方法返回的 ArrayList 时它起作用了。

您需要正确地告诉编译器列表中对象的类型:

List<Integer> primeFactors = prime.primeFactors();
        StringBuilder sb = new StringBuilder();
        for (Integer i: primeFactors) {
            sb.append(String.valueOf(primeFactors.get(i)));
            sb.append(" ");
        }

它应该工作得很好。

我会考虑将 primeFactors() 更改为 public static List<Integer> primeFactors(int n)。无需处理实例。