【问题标题】:Bool statement in a while loop c#在while循环c#中的布尔语句
【发布时间】: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

标签: c# boolean


【解决方案1】:

设置nameavalidation = false

bool nameValidation = false;
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;
  }
}

【讨论】:

    猜你喜欢
    • 2020-10-25
    • 2014-12-28
    • 2013-10-09
    • 2013-04-13
    • 2011-08-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多