报错:运算符'!='无法应用于'int'与'int[]',求代码问题排查
问题排查:运算符'!='无法应用于'int'与'int[]'
错误根源
你的代码里costs是二维int数组(int[][]),循环中costs[i]获取到的是一个一维int数组,而coins是单个整数类型,直接用!=把整数和数组做比较,属于类型不匹配,这就是报错的核心原因。
另外你的代码逻辑也存在问题:循环仅执行一次就会触发break或return,完全不符合maxIceCream函数“计算最多能买多少冰淇淋”的预期。
修正方案
根据函数名的语义,推测你应该是想传入一维数组存储每个冰淇淋的价格,以下是修正后的完整代码:
import java.util.Arrays; public static int maxIceCream(int[] costs, int coins) { Arrays.sort(costs); // 按价格升序排序,优先买便宜的才能买最多 int buyCount = 0; for (int singleCost : costs) { if (coins >= singleCost) { // 判断余额是否足够买当前冰淇淋 coins -= singleCost; buyCount++; } else { break; // 余额不够,直接终止循环 } } return buyCount; }
修正说明
- 把方法参数从
int[][] costs改为int[] costs,符合“冰淇淋价格列表”的常规场景,直接解决类型不匹配问题 - 调整逻辑:排序后遍历每个价格,余额足够就购买并累加数量,余额不足则停止
- 移除无意义的
found变量,简化代码逻辑
如果你的业务场景确实需要使用二维数组(比如每个元素存储价格和其他属性),则需要明确取二维数组中的具体数值进行比较,示例如下:
import java.util.Arrays; public static int maxIceCream(int[][] costs, int coins) { // 按每个冰淇淋的价格(二维数组第一个元素)升序排序 Arrays.sort(costs, (a, b) -> Integer.compare(a[0], b[0])); int buyCount = 0; for (int[] iceCream : costs) { int singleCost = iceCream[0]; // 取出当前冰淇淋的价格 if (coins >= singleCost) { coins -= singleCost; buyCount++; } else { break; } } return buyCount; }
内容的提问来源于stack exchange,提问作者behabtu Getnet
相关产品推荐
相关产品推荐

