試す
if (cursorCount > 1 && !("x".equals(componentType) || "y".equals(componentType)))
同等にあなたはすることができます
if (cursorCount > 1 && !"x".equals(componentType) && !"y".equals(componentType))
これは、ド・モルガンの法則を論理に適用したことによるものです。
私はこれらがあなたが望むもののあなたの英語の説明とより密接に一致すると信じています。
編集:
混乱を解消するために、英語の説明の最後の部分の論理を分析してみましょう。
...ただし、componentTypeがxまたはyと等しくない場合のみ。
同じことを述べる別の方法は、「componentTypeはxでもyでもない」です。これをコードに変換するには、さらに一歩進んで、この条件を「componentTypeがxまたはcomonentTypeがyの場合ではない」と言い換える必要があります。この最終バージョンは、正しいブール式が次の形式であることを示しています。
!(A || B)
これは、形式の元のコードとは大きく異なります。
!A || !B
私の最後の言い換えはより冗長ですが、余分な言い回しは論理をより明確にすることに注意してください。
ロジックを分析する別の方法は、指定したコードを確認することです。
!"x".equals(componentType) || !"y".equals(componentType)
いくつかの例を見てみましょう。
"x".equals(componentType) is true. This means the negation is false. It also means that
"y" .equals(componentType) `はfalseであり、その否定はtrueです。したがって、コードはtrueと評価されます。
"y".equals(componentType) is true. This means the negation is false. It also means that
"x" .equals(componentType) `はfalseであり、その否定はtrueです。したがって、コードはtrueと評価されます。
"x".equals(componentType) nor
「y」.equals(componentType)も真ではありません。これは、両方の否定がfalseであり、コードがfalseと評価されることを意味します。
コードは、1。と2の両方のケースでtrueと評価されることに注意してください。これは、英語の説明から期待されるものと同じ結果にはなりません。