首页 > 解决方案 > 无法为每个循环使用整数类型

问题描述

这是一个返回整数 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(" ");
        }

但它不起作用。它在行中显示“不兼容的类型。找到:'java.lang.Integer',需要:'java.lang.Object'”for (Integer i: primeFactors)

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

标签: javaarraylistforeach

解决方案


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

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). 无需处理实例。


推荐阅读