0
string confirm = "";

                    while (confirm != "y" || confirm != "n")
                    {
                        Console.Write("Remove {0}' account? (Y/N): ", Accounts[accountNumber].Name);
                        confirm = Console.ReadLine();
                        confirm = confirm.ToLower();
                    } 

由于某些未知原因,我的循环在检查中失败。即使确认是“n”或“y”,它仍然会再次循环。我什至通过使用断点检查了它是否绝对匹配“n”或“y”。那么为什么每次都没有通过检查呢?

4

4 回答 4

1
while (confirm != "y" || confirm != "n")

您将在您的字符串为NOTyNOT时循环n。如果是n,那么它不是y,反之亦然。你不能同时满足这两个条件!

你需要

 while (confirm != "y" && confirm != "n")

如果您的字符串不是yor ,这将得到满足n

于 2012-11-16T13:59:11.013 回答
0

因为你的字符串不能同时是yand n。替换||&&

while (confirm != "y" && confirm != "n")
于 2012-11-16T14:00:07.900 回答
0

这是一个错误的逻辑:例如,如果确认是“y”,它不等于“n”,所以它无论如何都会进入你的循环。

做这个:

while (!(confirm == "y" || confirm =="n")){
...
}
于 2012-11-16T14:00:28.070 回答
0

奥斯特勒博士,

你的逻辑是错误的。

对我来说,如果您以二进制方式思考,ir 会有所帮助。

0 OR 0 是唯一的假,而 0 OR 1、1 OR 1、1 OR 0 都是真。0 OR 0 表示你的 or 答案必须是 y 和 n,这是不可能的。

您需要的是使用 AND 运算符 (&&) 或使用相等而不是否定。

while (confirm != "y" && confirm != "n")

只要有一个既不是y也不是n的答案,这只会循环。

或者

while (confirm == "y" || confirm == "n")

仅当答案是 y 或 n 时才会循环。

提示:谷歌摩根法律!

于 2012-11-16T14:08:04.533 回答