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

数组中获取到多个最小值(仅需一个的问题排查)

解决数组最小值循环输出多个值的问题

我来帮你搞定这个问题!你遇到的情况很典型——你肯定是把打印最小值的System.out.println()语句放在了for循环的内部,导致每次循环比较后都会输出当前的临时最小值,而不是循环结束后得到的最终最小值。

举个例子,你之前的代码可能是这样的(错误写法):

int[] arr = {100, 95, 87, 85, 78};
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
    if (arr[i] < min) {
        min = arr[i];
    }
    System.out.println(min); // 这里在循环里,每次比较都打印
}

这段代码会依次输出95、87、85、78,正好和你描述的情况一致。

而正确的做法是,把打印语句移到循环外面,等整个循环遍历完数组、确定了真正的最小值后再打印:

int[] arr = {100, 95, 87, 85, 78};
// 初始化最小值为数组第一个元素(注意要确保数组非空)
int min = arr[0];
for (int num : arr) {
    if (num < min) {
        // 只有当当前元素比最小值小时,才更新最小值
        min = num;
    }
}
// 循环结束后,再输出最终的最小值
System.out.println("数组最小值:" + min);

另外补充两个小细节:

  • 你查找最大值的循环没问题,应该是因为你把打印最大值的语句放在了循环外面,所以只输出一次100
  • 如果数组可能为空或者为null,记得先做判断,避免出现数组越界异常:
    if (arr == null || arr.length == 0) {
        System.out.println("数组为空,无法查找最值");
        return;
    }
    

内容的提问来源于stack exchange,提问作者JasonWanderer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:25:15