计算两输入数字间整数平均值时结果异常的问题排查
问题排查与修复
错误原因分析
- 计算逻辑错误:平均值需要用总和除以两个输入数之间的整数个数,而非直接除以第二个输入数字
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); } }
修复说明
- 新增
count变量,通过公式num2 - num1 - 1计算出两个数之间的整数总数,示例中10-5-1=4,和实际数量一致。 - 计算平均值时,将
sum强制转换为double类型,再除以count,确保执行浮点除法,得到精确的小数结果。
内容的提问来源于stack exchange,提问作者Dawit Wondimeneh
相关产品推荐
相关产品推荐

