2010-01-11 11 views
6

Czy jest operator w Javie, który da wynik false, jeśli którykolwiek z warunków jest fałszywy, ale jeśli oba są prawdziwe lub oba fałszywe, wynik będzie prawdziwy ?Operator Java do sprawdzania, czy oba warunki są fałszywe, ale nie oba lub żaden

Mam pewien kod, który polega na wprowadzeniu przez użytkownika pewnych wartości do uruchomienia procesu. Ponieważ użytkownik powinien być w stanie wprowadzić tylko x lub y, ale nie oba lub żadne, chciałbym w tym przypadku pokazać komunikat o błędzie.

Odpowiedz

20

Chcesz XNOR, w zasadzie:

if (!(a^b)) 

lub (prościej)

if (a == b) 

gdzie a i b są warunki.

Przykładowy kod:

public class Test 
{ 
    public static void main(String[] args) 
    { 
     xnor(false, false); 
     xnor(false, true); 
     xnor(true, false); 
     xnor(true, true); 
    } 

    private static void xnor(boolean a, boolean b) 
    { 
     System.out.printf("xnor(%b, %b) = %b\n", a, b, a == b); 
    } 
} 

Produkuje tej tabeli prawdy;

xnor(false, false) = true 
xnor(false, true) = false 
xnor(true, false) = false 
xnor(true, true) = true 
+0

Jon, w tym przypadku warto byłoby pokazać pełną tabelę logiczną dla operatora XOR. Zrobiłbym to tutaj, ale formatowanie komentarzy jest okropne. – jdmichal

+0

Dzięki, tego właśnie szukałem! Wiedziałem, że był operator, po prostu nie mogłem go zapamiętać :) –

+0

@James: Zredagowałem to z prostszym sposobem robienia tego - operator równości! –

Powiązane problemy