while循环确认用户输入

时间:2015-10-13 20:25:28

标签: c# parsing while-loop try-catch

我陷入了一个c#问题,我无法让while循环结束。

userValue是在程序中较早输入的字符串。

字符串的格式为DateTime,新输入需要与原始userValue匹配。 I.E 确认用户原始出生日期。

我使用try / catch来确定输入是否可以解析为DateTime。

目前它只是一个循环,我试图在验证用户出生日期后停止循环。

string userValueTwo;

int stop = 0;
while (stop != 0)
{
    Console.WriteLine("Please verify your birth date");
    userValueTwo = Console.ReadLine();

     try
     {
        DateTime birthdayTwo = DateTime.Parse(userValueTwo);
     }
     catch
     {
         Console.WriteLine("You did not enter a valid format.");
         Console.ReadLine();
     }

     if (userValueTwo == userValue)
     {
         Console.WriteLine("Birth date confirmed.");
         Console.ReadLine();
     }

    else 
    {
        Console.WriteLine("Your birthday did not match our records. Please try again");
        Console.ReadLine();
    }
}

4 个答案:

答案 0 :(得分:4)

您可以在确认日期后使用中断语句,但不建议使用。

由于您已经实施了停止条件,因此只需在确认日期后将停止设置为1,并且while循环将不会继续运行。

这是使用布尔值的更好的解决方案:

bool stop = false;
while (!stop)
{
    Console.WriteLine("Please verify your birth date");
    userValueTwo = Console.ReadLine();

     try
     {
        DateTime birthdayTwo = DateTime.Parse(userValueTwo);
     }
     catch
     {
         Console.WriteLine("You did not enter a valid format.");
         Console.ReadLine();
     }

     if (userValueTwo == userValue)
     {
         Console.WriteLine("Birth date confirmed.");
         Console.ReadLine();
         stop = true;
     }

    else 
    {
        Console.WriteLine("Your birthday did not match our records. Please try again");
        Console.ReadLine();
    }
}

答案 1 :(得分:0)

确认后,在下面的代码行中使用 break;

答案 2 :(得分:0)

您已进入无限循环。无限循环通常是当用户没有满足对代码的一个或多个要求时跳转"退出循环要在目标完成后退出循环,请使用" break;",以退出当前循环。在嵌套循环的情况下,这可能需要多次发生

答案 3 :(得分:0)

您永远不会更改stop的价值。