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

计算两输入数字间整数平均值时结果异常的问题排查

问题排查与修复

错误原因分析

  • 计算逻辑错误:平均值需要用总和除以两个输入数之间的整数个数,而非直接除以第二个输入数字num2。示例里5和10之间的整数是6、7、8、9,共4个,正确计算应为30 / 4 = 7.5,但代码中用了sum / num2(即30/10=3),结果自然错误。
  • 整数除法陷阱:就算修正了逻辑,直接用int类型做除法时,Java会执行整数除法(自动舍去小数部分),比如30 / 4会得到7而非7.5,再赋值给double也只会变成7.0,仍不符合预期。

修复后的代码

import java.util.Scanner;

public class inbetweennumber {
    public static void main(String args []){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the 1st number");
        int num1 = input.nextInt();
        System.out.println("Enter the 2nd number");
        int num2 = input.nextInt();
        int sum = 0;
        double avg;
        // 计算两个数之间的整数个数:num2 - num1 - 1(排除num1和num2本身)
        int count = num2 - num1 - 1;

        for (int i = num1 + 1; i < num2; i++) {
            sum += i;
        }
        System.out.println("Sum: " + sum);
        // 先将sum转为double再做除法,避免整数除法导致的精度丢失
        avg = (double) sum / count;
        System.out.println("Average: " + avg);
    }
}

修复说明

  1. 新增count变量,通过公式num2 - num1 - 1计算出两个数之间的整数总数,示例中10-5-1=4,和实际数量一致。
  2. 计算平均值时,将sum强制转换为double类型,再除以count,确保执行浮点除法,得到精确的小数结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:05:14