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
相关产品推荐
相关产品推荐

