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

新手求助:如何为掷骰子求和程序添加退出循环逻辑

嗨,我来帮你搞定这个问题!你需要实现循环执行掷骰子逻辑+输入验证+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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:26:20