C# 返回主代码

C# 返回主代码,c#,C#,我刚刚用C#编写了一个简单的代码,用于显示一条消息,该消息将您的输入作为睡眠时间,并基于此返回您是否休息良好 问题是,无论何时键入除整数以外的任何内容,它都会引发异常,因此我尝试使用try-and-catch方法来处理此问题。 下次正确输入整数后,我希望代码再次返回计算。我如何修改我的代码来做到这一点 namespace ConsoleApplication9 { class Program { static void Main(string[] args)

我刚刚用C#编写了一个简单的代码,用于显示一条消息,该消息将您的输入作为睡眠时间,并基于此返回您是否休息良好

问题是,无论何时键入除整数以外的任何内容,它都会引发异常,因此我尝试使用try-and-catch方法来处理此问题。 下次正确输入整数后,我希望代码再次返回计算。我如何修改我的代码来做到这一点

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("your name");
            string name = Console.ReadLine();
            Console.WriteLine("how many hours of sleep did you get");

            try
            {
                int hoursOfSleep = int.Parse(Console.ReadLine());
                Console.WriteLine("hello " + name);

                if (hoursOfSleep > 8)
                {
                    Console.WriteLine("you are well rested");
                }
                else
                {
                    Console.WriteLine("you need sleep");
                }
            }
            catch
            {
                Console.WriteLine("Invalid Hours !! ");
                Console.WriteLine(" Enter hours in integer");
            }

        }
    }
}

试着用类似这样的东西来包装try catch

while(Console.Readline() != "q")
{
... your code here ...

}

然后,您的应用程序将继续运行,直到您键入q并按enter键,而不是按try…catch键,以阻止使用循环和TryParse键

int hoursOfSleep;
while(!int.TryParse(Console.ReadLine(), out hoursOfSleep)
{
    Console.WriteLine("Invalid Hours !! ");
    Console.WriteLine(" Enter hours in integer");
}

Console.WriteLine("hello " + name);

if (hoursOfSleep > 8)
{
    Console.WriteLine("you are well rested");
}
else
{
    Console.WriteLine("you need sleep");
}

您可以使用
int.TryParse
检查它是否为有效整数,而不是引发异常。然后,您可以使用
while
语句获取有效的输入。从catch再次调用main方法,如main(new[]{string.Empty})。@Mukund这很奇怪,也没有必要。简单的循环就足够了。@Mukund这是一个非常糟糕的解决方案。@Mukund因为是新手,他应该学会正确编码,不要做糟糕的事情