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

如何完善PositiveMinMaxAvg.java代码以计算正数值的最小最大值平均值?

问题描述

请在名为PositiveMinMaxAvg.java的文件中编写一个包含main方法的类,该方法要求所有命令行参数均可作为Double.parseDouble的合法输入。程序需计算命令行参数中解析为double类型且严格大于0的数值里,最小值与最大值的平均值并打印。若大于0的数值不足2个,则输出0。例如,若参数为-1.5、2.5、3.5、5,结果应为(2.5+5)/2=3.75(2.5是最小正数,5是最大正数)。

你的代码:

public class PositiveMinMax {
  //static double max = 0, total = 0, min, result, i;
  //static String i; 
  public static void main(String[] args) { 
    double max = 0, total = 0, min;
    min = Double.parseDouble(args[0]);
    //for(int s = 0; s < args.length; s++)
    for (String s:args) {
      double value = Double.parseDouble(s);
      //double value2 = Double.parseDouble(args[s]);
      if (max < value) {
        max = value;   
      }

      //min = Double.parseDouble(args[s]);
      if (min>value) {
      min = value; 
      } 

      total = min + max; 
    }
    System.out.println(total/2);
  }
}

你的疑问:我想知道需要在代码中添加哪些内容才能解决该问题,如何仅获取数组中的正数值的最小值和最大值、排除负数,我尝试了多种方法但始终无法实现。


解决方案

你的代码存在三个核心问题:未过滤正数、极值初始化逻辑错误、未统计有效正数数量。以下是修正后的完整代码:

public class PositiveMinMaxAvg {
    public static void main(String[] args) {
        double minPositive = Double.MAX_VALUE; // 初始化为最大double值,确保第一个正数能覆盖它
        double maxPositive = Double.MIN_VALUE; // 初始化为最小double值,确保第一个正数能覆盖它
        int positiveCount = 0; // 统计严格大于0的数值数量

        for (String arg : args) {
            double value = Double.parseDouble(arg);
            // 仅处理严格大于0的数值
            if (value > 0) {
                positiveCount++;
                // 更新最小正数
                if (value < minPositive) {
                    minPositive = value;
                }
                // 更新最大正数
                if (value > maxPositive) {
                    maxPositive = value;
                }
            }
        }

        // 根据正数数量决定输出结果
        if (positiveCount >= 2) {
            double average = (minPositive + maxPositive) / 2;
            System.out.println(average);
        } else {
            System.out.println(0);
        }
    }
}

关键修改说明

  • 过滤正数:通过if (value > 0)判断,只处理符合要求的数值,直接排除负数和0
  • 合理初始化极值:
    • 把minPositive初始化为Double.MAX_VALUE,确保第一个正数一定比它小,能正确更新最小值
    • 把maxPositive初始化为Double.MIN_VALUE,确保第一个正数一定比它大,能正确更新最大值
  • 统计正数数量:用positiveCount记录有效正数的个数,最后根据数量判断是输出平均值还是0
  • 类名修正:题目要求文件名为PositiveMinMaxAvg.java,因此类名必须改为PositiveMinMaxAvg,否则编译会报错

测试验证

  • 输入参数-1.5 2.5 3.5 5:过滤掉-1.5,统计到3个正数,输出(2.5+5)/2=3.75
  • 输入参数-3 -0.5 0:正数数量为0,输出0
  • 输入参数4.2:正数数量为1,输出0
  • 输入参数1.1 2.2:输出(1.1+2.2)/2=1.65

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:43:15