【发布时间】:2016-01-11 18:04:56
【问题描述】:
我遇到了一个 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();
}
}
【问题讨论】:
-
你永远不会增加
stop或调用break所以它不能退出循环。 -
考虑使用
DateTime.TryParse而不是使用异常来捕获解析失败。 -
另一方面......它甚至可以进入循环吗?
stop = 0;然后stop != 0应该总是导致 false 如果两者之间没有任何内容。 -
@Aaron 正如 Dave 指出的那样,正如您在 Kyriacross 的回答中看到的那样,您可以直接控制何时(或者如果有的话)while 循环结束。您可以使用
break;命令“提前”终止它,或者让while 循环知道已满足终止条件。一般来说,while (condition==true) { this.do(something); }循环会一直持续下去,直到您的条件变为假。这不会随意发生;您需要以某种方式将该条件设置为 false。
标签: c# parsing while-loop try-catch