java - 无法为每个循环使用整数类型
问题描述
这是一个返回整数 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 时它会起作用。
解决方案
您需要正确地告诉编译器列表中的对象将是什么类型:
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)
. 无需处理实例。
推荐阅读
- sql - T-SQL PIVOT 3 列
- javascript - 谷歌分析 - 用户没有足够的权限使用其他路径年龄的配置文件
- python-3.x - 将多个数据框导出到一个 csv 中的多个工作表
- oracle - 改进插入大表 ORACLE
- swagger - OpenApi 验证整数数组
- java - Java Spring Boot 构造函数参数 0 为必填项
- unity3d - 编译时内存分配错误统一
- sql - 创建缺少键值数据记录的视图
- interop - 从 ETH 智能合约中读取 BSC 智能合约上代币的总供应量
- tensorflow - Keras Tuner Hyperband - 如何设置最大试验和最大时期?