Abgekürzte IF-Schreibweise

Ofof91

Aktives Mitglied
Hallo community,

irgendwie funktioniert das nicht. Es ist sicher ein blöder Denkfehler drinnen..

Java:
int a=1;
     a == 2 ? System.out.println("Hi") : System.out.println("Hi11");
 
In C geht das, in Java nicht.

Java:
int a = 1;
System.out.println(a == 2 ? ("Hi") : ("Hi11"));
 
Danke für die schnelle Antwort..

Warum funktioniert das hier nicht?

Java:
int a=0;
a == 2 ? a=1 : a=3;
 
der Conditional operator darf nicht alleine stehen, darf keine Anweisung sein, muss ein Ausdruck sein, z.B. als Teil einer Anweisung

siehe auch zuletzt
http://www.java-forum.org/java-basics-anfaenger-themen/146777-anweisungen-ausdruecke.html
😉


ein Problem ist dann noch die Bindungsstärke aller Operatoren, ohne Klammern sieht hier es schlecht aus,
während ansonsten Variablenzuweisungen intern durchaus möglich sind im Gegensatz zum Aufruf von void-Methoden (andere wieder denkbar),

Variablenzuweisungen liefern auch den Wert weiter zurück,
Java:
if ((line = readLine()) != null)
liest man etwa häufig, line wird etwas zugewiesen, danach noch geprüft

-----

Java:
		int a = 0;
		a = a == 2 ? (a = 1) : (a = 3);
		System.out.println(a);
 
Zuletzt bearbeitet von einem Moderator:
Der Denkfehler ist, weil das keine abgekürzte If-Schreibweise ist. Der ternäre Operator darf nur in Stellen in Ausdrücken stehen, an denen eine Rückgabe erwartet wird, und die Rückgabe muss auch dementsprechend ausgedrückt sein. Etwas verwirrend, muss man sagen.
 
man könnte es auch sehr vorsichtig so ausdrücken das der ternär-operator eine rückgabe liefert ... ein if/else block nicht ... folglich darf im ternär-operator auch keine anweisung ausgeführt werden die keine rückgabe liefert was wiederum in einem if/else möglich st
 

Neue Themen


Zurück
Oben