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

Java中While循环输出异常:最小值与平均值计算错误排查

代码错误分析与修复

问题点梳理

  • 最小值初始化错误:low被初始化为0,而输入的有效数字都是正整数,导致最终输出的最小值始终为0,不符合预期。
  • 首数字未统计:第一个输入的数字(1)没有被加入sum和count,直接进入循环读取下一个数,导致总和少1、计数少1,平均值计算错误。
  • 终止符被误统计:循环内先读取下一个数字再判断,导致作为终止标记的-1被加入sum和count,进一步拉低平均值。
  • 最小值判断逻辑错误:原代码用num < max作为更新最小值的条件,这完全不符合逻辑,应该判断num < low才更新最小值。

修正后的代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        int num, max, low, sum;
        int count = 0;
        double avg = 0;
        
        // 读取第一个有效数字并初始化变量
        num = scnr.nextInt();
        max = num;
        low = num;
        sum = num;
        count = 1;
        
        // 循环读取后续数字,直到遇到负数
        while (true) {
            num = scnr.nextInt();
            if (num < 0) {
                break; // 遇到负数直接终止循环
            }
            // 更新最大值
            if (num > max) {
                max = num;
            }
            // 更新最小值
            if (num < low) {
                low = num;
            }
            sum += num;
            count++;
        }
        
        avg = (double) sum / count;
        System.out.println("Count of positive integers is: " + count);
        System.out.println("The highest value is: " + max);
        System.out.println("The lowest value is: " + low);
        System.out.println("The average is: " + avg);
    }
}

验证结果

输入1 2 2 1 3 -1后,输出与预期完全一致:

Count of positive integers is: 5
The highest value is: 3
The lowest value is: 1
The average is: 1.8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:40:48