C#新手作业求助:基于while循环实现输入数字至F/Q终止的求和方案
问题解答:基于while循环的数字求和程序
嘿,作为C#新手能主动上手写代码已经超棒啦!先给你明确答案:这两项作业要求完全合理,都是非常适合新手的基础练习——专门练while循环控制、输入处理和数值累加这些核心入门知识点,用来巩固基础再合适不过~
一、你的代码存在的几个关键问题
我帮你梳理下现有代码里的小坑:
- 变量未初始化:
string Number和double Shuma都没赋初始值,C#里局部变量必须初始化才能用,直接跑会编译报错 - 变量名拼写混乱:定义的变量是
Number,后面却用了Numri,这会直接触发编译错误 - 输入逻辑顺序错了:你直接把输入转成
double,但没先判断是不是终止字符F;而且如果用户输入非数字非F的内容,程序会直接崩溃 - 循环条件有漏洞:第一次进循环时
Number还没赋值,会直接报错
二、修正后的解决方案
我给你写了两个符合要求的健壮版本,还加了异常输入处理,避免程序崩溃:
版本1:输入'F'(不区分大小写)时停止并求和
using System; namespace DetyratSharp { internal class Program { public static void Main(string[] args) { // 初始化总和为0,局部变量必须先赋值 double totalSum = 0; string userInput; Console.WriteLine("请输入数字,输入'F'(大小写都行)结束程序:"); // 用无限循环,内部判断终止条件更灵活 while (true) { // 接收输入并去掉前后空格,处理空输入情况 userInput = Console.ReadLine()?.Trim() ?? string.Empty; // 判断是否触发终止条件 if (userInput.Equals("F", StringComparison.OrdinalIgnoreCase)) { break; // 跳出循环 } // 安全转换输入为数字,避免崩溃 if (double.TryParse(userInput, out double inputNumber)) { totalSum += inputNumber; // 累加有效数字 } else { Console.WriteLine("输入无效哦,请输入数字或'F'结束程序:"); } } Console.WriteLine($"所有输入数字的总和为:{totalSum}"); } } }
版本2:输入'Q'(不区分大小写)时停止并求和
只需要把终止字符的判断改成"Q"就行,其他逻辑完全一致:
// 替换原终止判断的代码即可 if (userInput.Equals("Q", StringComparison.OrdinalIgnoreCase)) { break; }
三、代码细节说明
while(true)无限循环:比直接判断输入更灵活,我们可以在循环内部根据条件主动退出StringComparison.OrdinalIgnoreCase:让终止字符不区分大小写(输入'f'/'F'、'q'/'Q'都能触发停止),提升用户体验double.TryParse:安全的类型转换方法,不会因为输入无效而崩溃,只有转换成功才会累加数值?.Trim() ?? string.Empty:处理用户输入空格或直接回车的情况,避免空引用异常
这样的代码既完全符合作业要求,又能应对各种异常输入,稳定性拉满~
内容的提问来源于stack exchange,提问作者hegibo2346
相关产品推荐
相关产品推荐

