Java实现数组求最小值功能输出错误结果的原因排查
问题根因
- 数组初始化时多分配了1个无效空间:
int[] marks = new int[n + 1];,Java中int类型数组的未手动赋值元素会被默认初始化为0 - 后续计算最值的循环遍历了数组全部长度的元素,包含了最后一个未输入值、默认是0的多余位置,因此统计得到的最小值不符合预期。
修复方案
任选以下一种方案修改即可:
方案1:调整数组容量适配实际输入长度
将数组声明代码修改为:
// 去掉多余的+1,数组容量和输入的元素数量完全一致 int[] marks = new int[n];
同时将打印数组的循环边界调整为:
for (int j = 0; j < marks.length; j++)
后续最值统计逻辑无需修改。
方案2:调整最值遍历边界,只遍历有效输入元素
如果有特殊逻辑需要保留n+1的数组长度,只需将计算最值的循环边界修改为:
// 仅遍历前n个已经手动赋值的有效元素 for (int i = 0; i < n; i++)
即可排除掉最后一位默认值0的干扰。
内容的提问来源于stack exchange,提问作者Shubham Guha
相关产品推荐
相关产品推荐

