You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错:运算符'!='无法应用于'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;
}

修正说明

  1. 把方法参数从int[][] costs改为int[] costs,符合“冰淇淋价格列表”的常规场景,直接解决类型不匹配问题
  2. 调整逻辑:排序后遍历每个价格,余额足够就购买并累加数量,余额不足则停止
  3. 移除无意义的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:20:22