繁体   English   中英

如果语句始终传递给else语句

[英]If statements always passing to else statement

我正在使用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语句。

我敢肯定,错误很简单,我只是无知,但是有人对这里发生的事情有任何想法吗?

使用|| 而不是单| || 卑鄙有条件,但单身| 二进制或

假设您的代码逻辑说:

if input=='y' OR input=="Y" ,则执行某项操作。

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

if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase)
{
   //do something/
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM