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

程序仅输入一次就终止问题求助:需实现数字和超20时终止功能

问题分析与修复方案

我来帮你看看这个问题!你的代码现在输入一次就终止,主要有两个关键逻辑错误,咱们一步步拆解:

问题1:错误累加了字符的ASCII值

你在foreach (int num in number)里直接累加num,但这里的num其实是输入字符的ASCII码值,不是数字本身。比如你输入字符'5',它的ASCII码是53,这直接让sum变成53,瞬间超过20,循环直接终止。

问题2:错误重置了累计总和

每次循环末尾的sum = 0;会把之前累计的总和清零,这样永远无法达到"各位数字之和大于20"的终止条件(除非单次输入的数字ASCII码总和超过20),完全违背了需求逻辑。


修正后的代码

class Program 
{
    static void Main(string[] args) 
    {
        int sum = 0;
        while (sum < 20) 
        {
            Console.WriteLine("请输入一个数字:");
            string input = Console.ReadLine();
            
            // 遍历输入字符串的每个字符,转换为数字后累加
            foreach (char c in input) 
            {
                // 判断是否是数字字符,避免非数字输入报错
                if (char.IsDigit(c))
                {
                    sum += (c - '0'); // 将字符转换为对应数字:'5'-'0'=5
                }
            }
            
            // 实时输出当前累计总和,方便查看进度
            Console.WriteLine($"当前累计各位数字之和:{sum}");
        }
        Console.WriteLine("累计总和超过20,程序终止!");
    }
}

关键修改说明

  • 把foreach (int num in number)改成遍历char类型,然后通过c - '0'将字符转换为对应的整数(利用ASCII码的连续性:'0'到'9'的ASCII码是连续的)
  • 移除了sum = 0;,保留累计总和直到超过20
  • 增加了输入提示和实时总和输出,方便测试
  • 加入了char.IsDigit(c)判断,避免用户输入非数字字符导致错误

测试示例

比如你依次输入:

  1. 输入5 → 累计总和=5(继续循环)
  2. 输入123 → 累计总和=5+1+2+3=11(继续循环)
  3. 输入99 → 累计总和=11+9+9=29(超过20,程序终止)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:57:59