296 votes

Création d’une « logique exclusive ou « opérateur en Java

Observations:

Java a une logique ET de l'opérateur.
Java est un opérateur logique OU.
Java est un opérateur logique not.

Problème:

Java n'a pas de logique opérateur XOR, selon le soleil. Je tiens à en définir un.

Définition De La Méthode:

En tant que méthode, il est simplement défini comme suit:

public static boolean logicalXOR(boolean x, boolean y) {
    return ( ( x || y ) && ! ( x && y ) );
}


Appel De La Méthode:

Cette méthode est appelée de la manière suivante:

boolean myVal = logicalXOR(x, y);


Opérateur D'Utilisation:

Je préférerais de beaucoup avoir un opérateur, utilisés comme suit:

boolean myVal = x ^^ y;


Question:

Je ne trouve rien sur la façon d'aller sur la définition d'un nouvel opérateur en Java. Où dois-je commencer?

750voto

javashlook Points 4800

Java possède un opérateur XOR logique, c’est ^ (comme dans `` ).

En dehors de cela, vous ne pouvez pas définir de nouveaux opérateurs en Java.

Edit : Voici un exemple :

Sortie :

 faux ^ = false false faux ^ = true true vrai ^ = false true vrai ^ true = false 

335voto

Maurice Perry Points 18154

N’est-il pas x ! = y ?

78voto

starblue Points 29696
<blockquote> <p>Java est un opérateur logique AND.<br>Java est un opérateur logique OR.</p> </blockquote> <p>Mal.</p> <p>Java a</p> <ul> <li>deux opérateurs logiques : AND normal est &amp; et contre les courts-circuits et est &amp; &amp;, et</li> <li>deux opérateurs logiques de l’OR : OR normal est | et contre les courts-circuits ou est ||.</li> </ul> <p>XOR n’existe que comme ^, car court-circuit évaluation n’est pas possible.</p>

34voto

Peter Lawrey Points 229686

Peut-être que vous avez mal compris la différence entre & et &&, | et || Le but de la coupe courte opérateurs && et || est-ce que la valeur de la première opérande peut déterminer le résultat et donc le deuxième opérande n'a pas besoin d'être évalué.

Ceci est particulièrement utile si le deuxième opérande serait une erreur. par exemple

if (set == null || set.isEmpty())
// or
if (list != null && list.size() > 0)

Cependant, avec XOR, vous devez toujours évaluer le second opérande pour obtenir le résultat le sens de l'opération est ^

25voto

Shuliyey Points 41

vous pouvez simplement écrire (a ! = b).

Cela pourrait fonctionner de la même façon comme un ^ b

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X