【发布时间】:2016-05-17 17:19:25
【问题描述】:
对于这段代码,我有一个 goto start;声明重复该部分,直到输入有效名称,但是我的老师不喜欢 goto,所以我不得不更改它。
目前这是我得到的,但我不确定为什么它不起作用。开始时程序甚至不会在后面的代码中启动,因为我使用输入用户名,当我在 bool 语句中使用它时它无法识别它。为了测试它,我稍后删除了 userName 行,程序打开但跳过了 bool 语句。
请帮我完成这项工作。谢谢
bool nameValidation = true;
while (nameValidation == false) {
Console.Write("Enter your name: "); // Asks for your name
userName = Console.ReadLine();
if (Regex.IsMatch(userName, @"^[a-zA-Z- ]+$")) // Validates the input containts characters and/or spaces
{
nameValidation = true;
}
else // Error message if the input is not valid
{
Console.Clear(); // Clear screen
Console.WriteLine("Please enter a valid name.");
nameValidation = false;
}
}
【问题讨论】:
-
因为在顶部您将
nameValidation设置为true,所以它永远不会执行循环。仅当nameValidation为 false 时才会执行您的循环。 -
循环将不会被执行,因为条件错误您将 bool 变量初始化为 true,并且您希望在变量为 false 时循环工作,因此将第一行更改为
bool nameValidation = true;,它将工作正常 -
啊,谢谢你们,但是我仍然有问题,如果我稍后在程序中使用 userName 字符串,我会收到“使用未分配的局部变量”的错误
-
nvm 已修复,非常感谢 ever1