Java BlueJ: Unexpected Type: Required: Variable, Found: Value?

1 Antwort

Deine Zuweisungsoperatoren verursachen das Problem.

Wenn man die einzelnen Ausdrücke

(a + b) < c
(b + c) < a
(a + c) < b

auswertet, erhält man für jeden einen boolschen Wert (true oder false). So stände letztendlich so etwas wie

true |= true |= true

dort (einmal unter Annahme, jeder Ausdruck wäre wahr). Das hieße, Java müsste im nächsten Schritt einen konstanten Wert (true) überschreiben.

true = true | true

Das ist aber nicht möglich. Genauso wenig kannst du Zahlen oder Zeichen überschreiben:

1 = 2;
'a' = 'b';

Das einzige, was erlaubt ist, ist das Überschreiben einer Variable, denn sie zeigt stets nur auf konstante Werte (oder Objekte) im Speicher.

boolean value = true;
value = false; // reassign

Somit dürfte für dich die Fehlermeldung nun verständlich sein.

Zur Lösung des Problems: An sich möchtest du doch lediglich prüfen, ob einer der Ausdrücke wahr ist (A ODER B ODER C). Daher ist auch der logische Verknüpfungsoperator OR angebracht:

if ((a + b) < c || (b + c) < a || (a + c) < b)

Dazu noch ein Rat: Setze Leerzeichen zwischen deine Operatoren. Es macht solche Ausdrücke besser leserlich. Wenn die Zeile dabei zu lang wird, kann man sie auch umbrechen:

if ((a + b) < c
  || (b + c) < a
  || (a + c) < b)

draculea 
Fragesteller
 24.11.2021, 08:40

vielen dank!

0