新手求助:如何为掷骰子求和程序添加退出循环逻辑
嗨,我来帮你搞定这个问题!你需要实现循环执行掷骰子逻辑+输入验证+quit退出的功能对吧?我给你整理了完整的解决方案,一步步来:
核心实现步骤
- 用
do-while循环保证程序至少执行一次,直到用户输入quit才退出 - 用
int.TryParse()验证输入是否为有效数字,彻底避免非数字输入导致的崩溃 - 每次循环先处理输入判断,优先识别退出指令,再执行掷骰子逻辑
完整代码示例
static void Main(string[] args) { Random random = new Random(); string userInput; int diceCount; // do-while循环:先执行一次逻辑,再判断是否继续 do { Console.WriteLine("请输入要掷骰子的次数(输入'quit'退出程序):"); userInput = Console.ReadLine()?.Trim() ?? ""; // 处理输入为空的情况 // 优先判断退出指令,忽略大小写 if (userInput.Equals("quit", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("程序已退出,再见!"); break; // 直接跳出循环结束程序 } // 验证输入是否为有效正整数 if (int.TryParse(userInput, out diceCount) && diceCount > 0) { int total = 0; Console.WriteLine($"正在掷{diceCount}次骰子:"); // 执行掷骰子并累加求和 for (int i = 0; i < diceCount; i++) { int diceRoll = random.Next(1, 7); // 生成1-6的随机数 total += diceRoll; Console.WriteLine($"第{i+1}次:{diceRoll}"); } Console.WriteLine($"本次掷骰子总和为:{total}\n"); } else { Console.WriteLine("输入无效!请输入正整数或者'quit'退出程序。\n"); } } while (true); // 无限循环,直到用户触发退出逻辑 }
关键细节说明
do-while循环:确保程序启动后直接进入输入流程,不用额外初始化判断条件,逻辑更顺畅StringComparison.OrdinalIgnoreCase:支持用户输入Quit/QUIT等任意大小写形式的退出指令,提升用户体验int.TryParse():尝试将输入转为整数,成功则返回true并把结果存入diceCount,失败则返回false,从根源上避免非数字输入引发的崩溃- 空输入处理:用
?.Trim() ?? ""处理用户直接按回车的情况,避免空引用异常
这样修改后,程序就能稳定重复运行,还能优雅处理各种异常输入啦!
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

