# Fragezeichen im Code



## freakdran (11. Dez 2014)

Hallo,

ich habe nun schon in mehreren Codes die ich im Internet gesucht hatte eine (für mich) merkwürdige Konstruktion gefunden.

Als Beispiel

```
private void(int low, int high, boolean test) {

	int k=test? low: high;

...
}
```

Was bedeutet das k=test? low: high ?

k = int und test = boolean, was soll also der Vergleich und warum das "?" ? Ohne funktioniert es nicht und es wird ein "?" er wartet, was bringt also das "?"?
Und dann noch "low:high". Ist das einfach nur von bis oder irgendetwas anderes?

Danke schonmal im Vorraus für die Antworten


----------



## Admiral Helmut (11. Dez 2014)

Die Konstruktion funktioniert so:

alles vor dem Fragezeichen ist eine if Abfrage, nach dem Fragezeichen kommt der True Fall und nach dem Doppelpunkt der False Fall
das bedeutet dem "int k" wird nicht "test" zugewiesen sondern entweder der True Fall oder der False Fall, jenachdem ob "test" eben true oder false ist.

Eigentlich schaut es oben so aus:


```
int a = (b<c) ? a : c
```
anstatt:


```
int a;
if(b<c) {
a = a;
}else {
a = c;
}
```

int k=test


----------



## freakdran (11. Dez 2014)

Also bezogen auf das Beispiel vorher:

```
int k;

if(test)
	k = low;
else
	k = high;
```
?
Und schonmal ein dickes Danke


----------



## Admiral Helmut (11. Dez 2014)

Genau.
Habe meinen Text oben nochmal editiert zur Erklärung.

Es ist einfach eine kürzere If Abfrage.

Nehme sie ehrlich gesagt selbst nie her.

Finde es nicht übersichtlicher, aber da kann man sich streiten


----------



## Joose (11. Dez 2014)

Vielleicht hilft dir dieser Link noch etwas weiter: Javabeginners - Ternaerer Operator


----------

