Eine gute Antwort wäre:

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.)

Präzedenz von NOT

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.

FRAGE 22:

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");
Inhaltsverzeichnis