if ( !(taktfrequenz > 2000 && ram > 512) )
System.out.println("Computer ablehnen");
else
System.out.println("Computer akzeptieren");
(Es wäre in diesem einfachen Fall vermutlich besser den
true- und false-Zweig zu vertauschen.
Aber angenommen es gäbe andere Erwägungen, die das nicht
wünschenswert sein ließen.)
Es ist wichtig den gesamten Ausdruck, dessen true/false-Wert Sie umkehren möchten, in Klammern zu setzen. Angenommen Sie betrachten einen Computer mit 2200 MHz Taktfrequenz und 750 MB RAM. Die Auswertung erfolgt folgendermaßen:
! ( taktfrequenz > 2000 && ram > 512 )
-------------+----- ----+-------
| |
! ( T && T )
------------------+-------
|
! ( T )
!T
F
Der NOT-Operator besitzt eine hohe Präzedenz, daher wird er zuerst durchgeführt (vor Arithmetik und relationalen Operatoren) es sei denn Sie verwenden Klammern. Zum Beispiel würde in dem oben stehenden Ausdruck ohne Klammern folgendes passieren:
!taktfrequenz > 2000 && ram > 512 -----+------- illegal: ! kann nicht für eine arithmetische Variable verwendet werden
Da ! eine hohe Präzedenz besitzt,
wird der Compiler versuchen ihn auf taktfrequenz anzuwenden,
was nicht funktionieren würde.
Manchmal kann die Verwendung von NOT verwirrend sein. Versuchen Sie die Programmlogik so anzuordnen, das Sie direkt sagt, was Sie wollen.
Betrachten Sie das folgende:
if ( !( taktfrequenz > 2000 && ram > 512 ) )
System.out.println("Computer ablehnen");
else
System.out.println("Computer akzeptieren");
Füllen Sie die Lücken aus, so dass das folgende das gleich tut:
if ( taktfrequenz ____ 2000 ____ ram ____ 512 )
System.out.println("Computer ablehnen");
else
System.out.println("Computer akzeptieren");