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 auf diese Weise:
! ( taktfrequenz > 2000 && ram > 512 ) -------------+----- ----+------- | | ! ( T && T ) ------------------+------- | ! ( T ) !T F
Der NOT-Operator besitzt eine hohe Präzedenz. Daher wird er zuerst durchgeführt (vor arithmetischen 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, dass 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 gleiche tut:
if ( taktfrequenz ____ 2000 ____ ram ____ 512 ) System.out.println("Computer ablehnen"); else System.out.println("Computer akzeptieren");