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

pro2

Bekanntes Mitglied
In C geht das, in Java nicht.

Java:
int a = 1;
System.out.println(a == 2 ? ("Hi") : ("Hi11"));
 

Ofof91

Aktives Mitglied
Danke für die schnelle Antwort..

Warum funktioniert das hier nicht?

Java:
int a=0;
a == 2 ? a=1 : a=3;
 
S

SlaterB

Gast
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:
H

hüteüberhüte

Gast
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.
 
T

tröööt

Gast
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
 

Ähnliche Java Themen

Neue Themen


Oben