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

C#使用while循环计算用户输入所有数字平均值问题求助

你的代码存在以下几处核心问题:

  • 循环条件逻辑错误:当前用||(或)连接判断条件,无论用户输入任何值都会满足循环条件,永远不会退出循环。比如用户输入Yes时,enter!="yes"的判断结果仍为真,循环会继续执行。这里应该改用&&(与)连接,或是简化为将输入统一转小写后判断是否为结束标识,逻辑更简洁。
  • 数值累加逻辑完全错误:你在循环内每次执行sum = decimal.Parse(enter)会直接覆盖之前的累加结果,后续sum += counter是把计数变量加到总和里,完全不符合需求。且直接调用decimal.Parse遇到非数字输入会直接抛出异常,不符合“忽略非数字输入”的要求,应该用decimal.TryParse做安全校验。
  • 有效输入判断逻辑缺失:你只在进入循环前判断了第一次输入是否为有效数字,循环内的所有输入都没有做有效性校验,也没有统计有效输入的数量。
  • 除零异常风险:如果用户没有输入任何有效数字,counter值为0,执行sum / counter会直接抛出除以零的异常。
  • 输出内容不符:你最终输出字符串标注是“数字总和”但实际传入的是平均值,和需求不符。

修正后的完整可运行代码如下:

Console.WriteLine("Please enter any numbers, then type Yes to continue.");
string enter = Console.ReadLine();
int counter = 0;
decimal sum = 0;

// 循环判断:输入不是结束标识时继续处理
while (enter.ToLower() is not "yes" and not "y")
{
    // 校验当前输入是否为有效数字,是才累加计数
    if (decimal.TryParse(enter, out decimal currentNum))
    {
        sum += currentNum;
        counter++;
    }
    // 提示下一次输入
    Console.WriteLine("Please enter any numbers, then type Yes to continue");
    enter = Console.ReadLine();
}

// 输出逻辑
string msg = counter > 0 ? $"The average of your numbers is {sum / counter}" : "you didn't enter any numbers";
Console.WriteLine(msg);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:04