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

Java循环输入数字到0计算平均值时result变量除法运算不生效如何解决

代码问题排查

你的代码存在3处核心逻辑错误,直接导致除法运算结果不符合预期:

  • 未定义独立的累加变量:你反复用同一个number变量接收用户输入、执行累加操作,每次读取新输入后旧的数值会直接被覆盖,number += number的逻辑本质是将当前输入值乘2,完全没有累计之前所有输入的数字,循环终止时number的值就是用来结束循环的0,所以最终除法运算的分子永远是0。
  • 计数逻辑错误:不管用户输入的是不是用来终止的0,你都会执行counter++,会把无效的终止输入也计入统计,导致平均值的分母偏大。
  • 整数除法精度丢失:用int类型执行除法会自动丢弃小数部分,即便分子分母数值正确,计算出来的平均值也会缺失精度。

修正后代码

import java.util.Scanner;

public class AverageCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int inputNum = 0;
        int sum = 0;
        int counter = 0;
        
        do {
            System.out.println("请输入数字:");
            inputNum = scanner.nextInt();
            // 仅对非0的有效输入执行累加和计数
            if (inputNum > 0) {
                sum += inputNum;
                counter++;
            }
        } while(inputNum != 0); // 输入0直接终止循环
        
        // 先将sum强转为double再做除法,避免整数除法
        double result = (double) sum / counter;
        
        System.out.println("已输入数字的平均值为 -> "+ result);
        scanner.close();
    }
}

内容的提问来源于stack exchange,提问作者Jose Erasmo Hernandez Yate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:15:03