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

Java数组查找最小值异常:返回首元素而非正确值求助

问题修复方案

你的代码存在两个关键错误,导致无法正确返回最小值:

错误1:if语句末尾多余的分号

if (arr[i] < min); 末尾的分号会让if条件判断后没有执行逻辑,后面的{ min = arr[i]; }会变成独立代码块,每次循环都会执行,导致min被赋值为当前循环的数组元素,最终无法正确筛选出最小值。

错误2:返回语句错误

return arr[min]; 是错误的,因为min已经是我们找到的最小值,直接返回min即可。arr[min]是取数组中索引为min的元素,这会导致返回错误值甚至数组越界(比如最小值为负数或大于数组长度时)。

修正后的代码

public static void main(String[] args) {
    int[] arr = {2, 1, 4, 3, 6, 5, 8, 7};
    int min;
    min = findMin(arr);
    System.out.println("Smallest value: " + min);
}

public static int findMin(int[] arr) {
    int min = arr[0];
    for (int i = 0; i < arr.length; i++) {
        // 去掉if末尾的分号
        if (arr[i] < min) {
            min = arr[i];
        }
    }
    // 直接返回min,而非arr[min]
    return min;
}

另外你提到“嵌套循环”,如果想用嵌套循环实现逐个比较的逻辑,可以参考下面的写法:

public static int findMin(int[] arr) {
    int min = arr[0];
    for (int i = 0; i < arr.length; i++) {
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[j] < min) {
                min = arr[j];
            }
        }
    }
    return min;
}

不过单循环找最小值的效率更高,更推荐第一种写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:55:24