while 循环确认用户输入

While loop to confirm user input

我遇到了一个无法结束 while 循环的 c# 问题。

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

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

我使用 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();
    }
}

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

您可以在确认日期后使用break语句,但不推荐。

因为你已经实现了一个停止条件,只要在确定日期后将stop设置为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();
    }
}

您已进入死循环。无限循环通常是在用户未满足 "hop" 代码的一项或多项要求时退出循环 要在满足 objective 后退出循环,请使用 "break;",以跳出当前循环。在嵌套循环的情况下,这可能需要发生不止一次

您永远不会更改 stop 的值。