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

请求完善C#控制台程序的退出确认循环逻辑

完善C#控制台程序的循环确认逻辑

原代码存在三个核心问题,导致无法实现预期功能甚至引发程序异常:

  • 使用int.Parse处理用户输入,若输入非数字会直接抛出异常导致程序崩溃
  • day % 7的计算结果范围是0-6,原代码中case 7永远不会被触发(7除以7余数为0)
  • 确认是否继续的内部while循环缺少执行逻辑,且未更新输入变量,会陷入死循环

以下是修正后的完整代码:

using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                // 处理数字输入,避免非数字导致的程序崩溃
                int day;
                Console.WriteLine("Enter a number: ");
                while (!int.TryParse(Console.ReadLine(), out day))
                {
                    Console.WriteLine("Invalid input! Please enter a valid integer: ");
                }

                int dayToTest = day % 7;
                // 修正余数与星期的对应关系,7的倍数余数为0对应周日
                switch (dayToTest)
                {
                    case 1:
                        Console.WriteLine("Monday");
                        break;
                    case 2:
                        Console.WriteLine("Tuesday");
                        break;
                    case 3:
                        Console.WriteLine("Wednesday");
                        break;
                    case 4:
                        Console.WriteLine("Thursday");
                        break;
                    case 5:
                        Console.WriteLine("Friday");
                        break;
                    case 6:
                        Console.WriteLine("Saturday");
                        break;
                    case 0:
                        Console.WriteLine("Sunday");
                        break;
                }

                // 处理程序继续执行的确认逻辑
                string decision;
                do
                {
                    Console.WriteLine("Would you like to reexecute the program? yes or no");
                    // 处理输入为null的情况,同时统一格式并去除空格
                    decision = Console.ReadLine()?.Trim().ToLower() ?? string.Empty;
                    if (decision != "yes" && decision != "no")
                    {
                        Console.WriteLine("Invalid input! Please enter 'yes' or 'no'.");
                    }
                } while (decision != "yes" && decision != "no");

                // 判断是否退出程序
                if (decision == "no")
                {
                    break;
                }
            }
        }
    }
}

关键修改说明

  1. 安全的数字输入处理:
    用int.TryParse替代int.Parse,并嵌套循环反复提示用户输入有效数字,彻底避免非数字输入导致的崩溃问题。

  2. 修正星期对应逻辑:
    将原代码中的case 7改为case 0,因为任何7的倍数(包括7本身)除以7的余数都是0,这样才能正确识别周日。

  3. 完善的循环确认逻辑:
    使用do-while循环实现确认流程:

    • 每次循环都会重新获取用户输入
    • 对输入做格式统一(转小写、去空格),同时处理输入为null的边界情况
    • 当输入不是yes或no时,提示错误并重复询问,直到输入有效
    • 输入有效后,判断是否退出外层循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:30