0
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」のいずれかに確実に一致することを確認しました。では、なぜこれが毎回チェックに失敗するのでしょうか?

4

4 に答える 4

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

文字列がNOTまたは NOT のいずれかである間、ループします。の場合はNOTであり、その逆も同様です。両方の条件を同時に満たすことはできません。ynny

あなたが必要

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

y文字列がor以外の場合、これは満たされますn

于 2012-11-16T13:59:11.013 に答える
0

文字列が と の両方yになることはできないため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 の場合にのみループします。

ヒント: Google モルガン法!

于 2012-11-16T14:08:04.533 に答える