Wie wird dieser Ausdruck in Java korrekt geklammert?
Hallo!
Alle anderen Aufgaben habe ich schon korrekt bearbeitet, aber bei dieser Aufgabe ist es auch nach gefühlt hundert verschiedenen Klammerungen noch nicht richtig.
Dieser Ausdruck soll geklammert werden: i - j + k == 0 || i != j || k != 0
Vielen Dank im Voraus
2 Antworten
Die meisten Operationen sind links-assoziativ, d.h. a + b - c ist (a + b) - c, und a || b || c ist (a || b) || c.
|| hat eine geringere Priorität als ==, was wiederum eine geringere Priorität als + und - hat. Also:
((((i - j) + k) == 0) || (i != j)) || (k != 0)
Vielen Dank! Ich habe tatsächlich einfach am Anfang eine Klammer vergessen.
Das ist sinnbefreit, solange nicht etwas anderes ausgedrückt werden soll, als der Ausdruck auch ohne Klammerungen ausdrückt.
D.h. es bräuchte die eigentliche Aussage und dann muß ggf. geklammert werden.
DAS wiederum ist eine andere Fragestellung.
+ und - haben höchste Präzedenz (in diesem Ausdruck):
(i - j + k) == 0 || i != j || k != 0
Vergleiche haben höhere Präzedenz als logische Verknüpfungen:
( (i - j + k) == 0 ) || ( i != j ) || ( k != 0)
P.S.: Wenn Du die Assoziativität hinzunimmst, dann wäre die Antwort von VBA wohl die vollständige Variante.
Als Übung sollen aber verschiedene Ausdrücke nach der Reihenfolge der Operationen in Java geklammert werden.