string confirm = "";
while (confirm != "y" || confirm != "n")
{
Console.Write("Remove {0}' account? (Y/N): ", Accounts[accountNumber].Name);
confirm = Console.ReadLine();
confirm = confirm.ToLower();
}
由于某些未知原因,我的循环检查失败。即使确认IS为“n”或“y”,它仍然会再次循环。我甚至通过使用断点来检查它是否与“n”或“y”匹配。那么为什么每次检查都失败了呢?
答案 0 :(得分:1)
while (confirm != "y" || confirm != "n")
当你的字符串是 NOT y
或NOT n
时,你会循环。如果是n
,那么它不是y
,反之亦然。你不能同时满足这两个条件!
你需要
while (confirm != "y" && confirm != "n")
如果您的字符串不是y
或n
,则会满意。
答案 1 :(得分:0)
因为您的字符串不能同时为y
和n
。将||
替换为&&
:
while (confirm != "y" && confirm != "n")
答案 2 :(得分:0)
这是一个错误的逻辑:如果例如确认是“y”,它不等于“n”,所以它将在你的循环中进入。
这样做:
while (!(confirm == "y" || confirm =="n")){
...
}
答案 3 :(得分:0)
DrOstler,
你的逻辑错了。
对我来说,如果你用二进制思考,我会有所帮助。
0 OR 0是唯一的假值,0 OR 1,1或1,1或0都是真的。 0或0意味着您或答案必须是y和n,这是不可能的。
您需要的是使用AND运算符(&&)或使用相等而不是否定。
while (confirm != "y" && confirm != "n")
只要答案既不是y也不是n,这只会循环。
OR
while (confirm == "y" || confirm == "n")
如果答案是y或n,则仅循环。
提示:谷歌摩根法律!