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

Java计算数组最值时minValue恒输出0而maxValue正常问题排查

问题排查结果

根因分析

  • Java中int类型数组初始化后,未手动赋值的元素默认值为0。你在还没给day数组填充任何用户输入值的时候,就直接把默认值为0的day[0]赋值给了minValue,这是问题的核心原因。
  • 当你所有输入的数值都大于0时,后续循环里的判断if (day[i] < minValue)永远不会触发,minValue就会一直保留初始的0,导致输出错误。
  • maxValue能正常输出是因为只要你输入的数值大于初始的0,判断if (day[i] > maxValue)就会正常触发更新,最终会得到正确的最大值。

修复方案

有两种常用的修复方式:

方式1:修改最值初始值

将minValue和maxValue的初始值改为整型边界值,避免依赖数组默认值:

Scanner sc = new Scanner(System.in);
int x= sc.nextInt();
int[] day =  new int[x];
// 修改初始值为整型边界
int minValue = Integer.MAX_VALUE; 
int maxValue = Integer.MIN_VALUE;

for (int i = 0; i < x; i++) {
    day[i] = sc.nextInt();
    if (day[i] < minValue) minValue = day[i];
    if (day[i] > maxValue) maxValue = day[i];
}

System.out.println(minValue);
System.out.println(maxValue);

方式2:先填充数组再统计最值

先把所有用户输入存入数组,再用第一个有效元素初始化最值,遍历统计结果:

Scanner sc = new Scanner(System.in);
int x= sc.nextInt();
int[] day =  new int[x];
// 先填充数组所有元素
for (int i = 0; i < x; i++) {
    day[i] = sc.nextInt();
}
// 再用已赋值的第一个元素初始化最值
int minValue = day[0]; 
int maxValue = day[0];
for (int i = 0; i < x; i++) {
    if (day[i] < minValue) minValue = day[i];
    if (day[i] > maxValue) maxValue = day[i];
}

System.out.println(minValue);
System.out.println(maxValue);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:54:05