无法为每个循环使用整数类型
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)
。无需处理实例。
这是一个 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)
我不知道这里发生了什么,因为当我使用没有从方法返回的 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)
。无需处理实例。