循环计算平均值时变量t未重置导致结果异常的问题求助
问题分析与解决方案
问题根源
你的代码核心问题是每次重新计算平均值时,没有重置总和变量t和计数变量count。第一次计算完成后,t保留了上一轮的总和,count也停留在6(内层循环到count<=5时停止,此时count为6),导致第二次循环时:
t会在之前的总和基础上继续累加新输入的数值count初始值不是1,会直接跳过部分输入步骤,最终计算的t是两次输入的总和,除以5自然得到错误的平均值
修复步骤
- 重置关键变量:在外层
do循环的最开始,将t重置为0,count重置为1(对应输入提示里的number1) - 补全外层循环的退出逻辑:原代码缺少读取用户是否继续的输入判断,需要补充这部分逻辑,确保能正确退出循环
修复后的完整代码示例
import java.util.Scanner; public class AverageCalculator { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int d1, total; // 外层循环控制是否重复执行 do { int t = 0; // 每次循环重置总和为0 int count = 1; // 每次循环重置计数为1 // 内层循环读取5个有效整数 do { System.out.print("Enter number" + count + ":"); if (scan.hasNextInt()) { d1 = scan.nextInt(); count++; t += d1; // 只有输入有效时才累加 } else { System.out.print("Number is invalid. "); scan.next(); // 清除无效输入 continue; } } while (count <= 5); total = t / 5; System.out.println("The average is :" + total + " ."); System.out.print("[do you want to continue press[ y ]for yes and [ n] for no ]:"); // 读取用户选择,处理可能的空格/换行 String choice = scan.next().trim().toLowerCase(); if (!choice.equals("y")) { break; // 不是y就退出外层循环 } } while (true); scan.close(); } }
额外说明
- 把
t和count声明在外层循环内部,每次循环都会重新初始化,彻底避免变量残留值的问题 - 补充了用户输入选择的处理逻辑,确保循环能正确终止
- 调整了
t+=d1的位置,只有当输入是有效整数时才累加,逻辑更严谨
内容的提问来源于stack exchange,提问作者Ddsec
相关产品推荐
相关产品推荐

