如何编写while循环实现正数输入收集并计算平均值?
问题解决:收集正数并计算平均值的while循环实现
你的代码存在几个关键逻辑错误,无法实现需求,以下是修正后的完整实现及问题说明:
原代码问题点
- 仅读取一次用户输入,循环内错误执行
input++而非获取新输入 - 平均值计算写死除以3,未统计实际输入的正数总数与总和
- 未处理输入负数的情况,也没有避免无正数输入时的除以0错误
正确实现代码
int input; double sum = 0; int positiveCount = 0; Console.WriteLine("请输入正数,输入0结束程序:"); while (true) { input = int.Parse(Console.ReadLine()); if (input == 0) { break; // 输入0时终止循环 } if (input > 0) { sum += input; positiveCount++; } else { Console.WriteLine("请输入正数或0!"); } } if (positiveCount > 0) { double average = sum / positiveCount; Console.WriteLine($"所有正数的平均值为:{average:0.00}"); } else { Console.WriteLine("未输入任何正数,无法计算平均值"); }
代码说明
- 用
sum存储正数总和,positiveCount统计输入的正数数量 - 无限循环配合
break实现"输入0停止"的逻辑 - 每次输入后先判断是否为终止条件,再判断是否为正数,负数则提示重新输入
- 循环结束后先判断是否有有效输入,避免除以0的运行时错误
内容的提问来源于stack exchange,提问作者KontjeKnal
相关产品推荐
相关产品推荐

