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

Java MinMax程序最值计算异常:结果始终出现0的问题求助

问题根源分析

你遇到的问题出在最小值和最大值的初始化逻辑上:

  • Java中创建long[]数组时,所有元素的默认值是0,你在解析输入参数之前就用measArray[0]初始化了lowestMeas和highestMeas,这两个变量一开始就被设成了0。
  • 当所有输入参数都大于0时,lowestMeas永远不会被更新(因为没有输入比0小),最终输出0;当所有输入都小于0时,highestMeas永远不会被更新(没有输入比0大),最终输出0。
修复方案

方案1:先解析第一个参数,再初始化极值

先把第一个输入参数解析到数组,再用这个值初始化lowestMeas和highestMeas,之后从第二个元素开始循环处理:

public class MinMax {
    public static void main(String[] args) throws Exception {
        if(args.length == 0){
            System.out.println("ERROR: Bitte mindestens eine Zahl als Argument übergeben!");
            return;
        }

        long[] measArray = new long[args.length];
        // 先解析第一个元素
        measArray[0] = Long.parseLong(args[0]);
        // 用第一个元素初始化极值
        long lowestMeas = measArray[0];
        long highestMeas = measArray[0];
        
        // 从第二个元素开始循环
        for(int i = 1; i < measArray.length; i++){
            measArray[i] = Long.parseLong(args[i]);

            if(measArray[i] < lowestMeas){
                lowestMeas = measArray[i];
            }
            if(measArray[i] > highestMeas){
                highestMeas = measArray[i];
            }
        }
        System.out.println(lowestMeas);
        System.out.println(highestMeas);
          
    }
}

方案2:省略数组(优化版)

如果不需要保存所有输入参数,直接用第一个参数解析后的值初始化极值,然后遍历剩余参数即可,还能节省内存:

public class MinMax {
    public static void main(String[] args) throws Exception {
        if(args.length == 0){
            System.out.println("ERROR: Bitte mindestens eine Zahl als Argument übergeben!");
            return;
        }

        long lowestMeas = Long.parseLong(args[0]);
        long highestMeas = lowestMeas;
        
        for(int i = 1; i < args.length; i++){
            long current = Long.parseLong(args[i]);
            if(current < lowestMeas){
                lowestMeas = current;
            }
            if(current > highestMeas){
                highestMeas = current;
            }
        }
        System.out.println(lowestMeas);
        System.out.println(highestMeas);
          
    }
}

测试验证

  • 执行java MinMax 2 3 2,输出2和3
  • 执行java MinMax -9 -3 -10 -1,输出-10和-1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:10:31