0

我正在使用 c# 开发一个简单的密码存储控制台应用程序。

我在询问用户是否想从那时起屏蔽所有密码条目的部分上遇到了一些问题。

这是代码部分:

bool tryagain = true;
while(tryagain == true)
{
  Console.WriteLine("Would you like to mask all other password  entiries?(Y,N)");
  string input = Console.ReadLine();
  if (input == "y" | input == "Y")
  //Something wrong, always passes to Your awnser was invalid
  {
      maskpass = true;
      tryagain = false;
  }

  if (input == "n" | input == "N")
  {
      maskpass = false;
      tryagain = false;
  }
  else
  {
      Console.WriteLine("Your awnser was invalid, would you like to try again?");
      string yesno = Console.ReadLine();
      if (yesno == "y" | yesno == "Y")
      {
          tryagain = true;
      }

      if (yesno == "n" | yesno == "N")
      {
          Environment.Exit(0);
      }
  }
}

问题是当我运行代码时,它总是运行到 else 语句。

我确定这个错误很简单,我只是无知,但有人知道这里发生了什么吗?

4

2 回答 2

7

使用||而不是单个|. ||均值条件,但单|二元或

假设您的代码逻辑说:

if input=='y' OR input=="Y", 做一点事。

另一个建议。如果我的假设正确,您可以通过简单的String.Equals重载来实现:

if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase)
{
   //do something/
}
于 2012-07-15T16:02:25.587 回答
0

您可以使用 || 或者您可以使用 String 类 String.equals 的方法。由于它是一个字符串,因此您将其作为输入读取,因此最好使用 String.equals 方法

于 2012-07-15T16:16:23.063 回答