while ループで equalsIgnoreCase() を使用して、NOT (!) 演算子を使用して、意図した以外のものが書き込まれているかどうかを確認しようとしています。例えば:
String temp="A";
boolean x =(!temp.equalsIgnoreCase("a")) ;
ほら、これはwhileループで機能します。A でない場合はループし続けますが、この次の行はループしません。
boolean x =(!temp.equalsIgnoreCase("a") || !temp.equalsIgnoreCase("b")) ;
これはもう機能していないようです。これは、何を入力しても、それが a または b であっても true を返します。したがって、コード行全体を使用して、使用されていない文字をチェックすると、次のようになります。
while (!temp.equalsIgnoreCase("A") || !(temp.equalsIgnoreCase("B")) ||!temp.equalsIgnoreCase("D")|| !temp.equalsIgnoreCase("P") || !temp.equalsIgnoreCase("S"))
{ ***Do Code***}
文字の 1 つに等しい場合でも、入力したものは何でもループします。
複数の !temp.equalsIngnoreCase がある場合、コードは OR (||) では機能しません。
それを機能させる唯一の方法は、ORをANDに変更することです
while (!temp.equalsIgnoreCase("A") && !(temp.equalsIgnoreCase("B")) && !temp.equalsIgnoreCase("D")&& !temp.equalsIgnoreCase("P") && !temp.equalsIgnoreCase("S"))
解決策を見つけたように見えますが、OR が機能しないのに AND が機能する理由はまだわかりません。すべてが機能するかどうかを確認するために NOT を削除しました。文字の 1 つが入力されると、完全にループするようです。