程序仅输入一次就终止问题求助:需实现数字和超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)判断,避免用户输入非数字字符导致错误
测试示例
比如你依次输入:
- 输入
5→ 累计总和=5(继续循环) - 输入
123→ 累计总和=5+1+2+3=11(继续循环) - 输入
99→ 累计总和=11+9+9=29(超过20,程序终止)
内容的提问来源于stack exchange,提问作者joseLapa
相关产品推荐
相关产品推荐

