我正在使用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语句。
我确定这个错误非常简单,而我只是无知,但任何人都对这里发生的事情有什么想法?
答案 0 :(得分:7)
使用||
代替单|
。 ||
表示或有条件,但单|
是二进制或。
我假设代码的逻辑说:
if input=='y' OR input=="Y"
,做点什么。
还有另一种建议。如果我的假设正确,你可以通过简单的String.Equals重载来实现:
if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase)
{
//do something/
}
答案 1 :(得分:0)
您可以使用||或者您可以使用String类String.equals的方法。因为它是一个String,你正在阅读作为输入更好地使用String.equals方法