Java一维数组求最大值函数无输出且程序未终止问题求助
问题分析与修复
你的程序卡在死循环里了,根本没机会执行到输出逻辑,问题全出在findMax函数里:
1. while循环后的多余分号
看这行代码:
while (element != 5); {
这里的分号;是致命错误——它把while的循环体变成了一个空语句,后面大括号{}里的代码根本不会被执行。而且element的值一直是1,永远满足element !=5的条件,程序就一直卡在这个空循环里,永远不会往下走。
2. 循环内未递增element变量
就算去掉分号,你的循环里也没有让element自增的逻辑,element永远是1,还是会无限循环。
修正后的findMax函数
public static int findMax(int data[]){ int max = data[0]; int element = 1; // 去掉分号,同时在循环里递增element while (element != 5) { if (data[element] > max) { max = data[element]; } element++; // 必须加这行,让循环能正常结束 } System.out.println(max); return max; }
另外,用for循环会更直观,也不容易出错,还能适配不同长度的数组:
public static int findMax(int data[]){ int max = data[0]; for(int element = 1; element < data.length; element++){ if(data[element] > max){ max = data[element]; } } System.out.println(max); return max; }
用data.length代替硬编码的5,数组长度变化时不用修改循环条件,扩展性更好。
内容的提问来源于stack exchange,提问作者skrubiks
相关产品推荐
相关产品推荐

