?: Operator

C.B.

Aktives Mitglied
Hallo,

kann mir wer sagen was der Operator ?: bewirkt?

Anbei ein Code in dem der Operator in der Methode gaius vorkommt. Was bewirkt er hier? Ich hab gelesener überprüft ob etwas true oder false ist.
Hier kommt beim ersten durchlauf true heraus aber wieso ist 5==-5? Anschließend wird dieser Ausdruck als Zahl an die Methode char e übergeben.

Vielen Dank



Java:
    public static String gaius(String s, boolean enc) {
        String result ="";
        char l='a';
        for (int i=0; i<s.length();++i) {
            if(s.charAt(i)>=l && s.charAt(i)<=l+25)
                result+=e(s.charAt(i), enc?5:-5);
            }
        return result;
    }
        

        

    private static char e(char x, int y) {
        x+=y;
        if(y>0 && x>'z') x-='z'-'a'+1;
        if(y<0 && x<'a') x+='z'-'a'+1;
        return x;
    }







private static char e(char x, int y) {
x+=y;
if(y>0 && x>'z') x-='z'-'a'+1;
if(y<0 && x<'a') x+='z'-'a'+1;
return x;
}[/CODE]
 
Damit kann eine einfache if/else Abfrage gemacht werden. Je nachdem ob der Boolsche Ausdruck vor dem "?" True oder False ist wird der Wert Links vom ":" genommen, andernfalls Rechts davon.

In deinem Beispiel heißt das: Wenn die Boolsche Variable enc True ist wird 5 als zweiter Parameter an die Methode e(int, int) übergeben. Wenn sie False ist, wird -5 übergeben.
 
unter ternary operator findest du auch etwas dazu

wo ih ihn meistens bneutzte ist bei return statements wenn beide if statements nur eine kurze zeile als anweisung hat zb

Java:
if(xyz )
    return false;
else
    return true;

=>

return xyz ? true : false;
 
unter ternary operator findest du auch etwas dazu

wo ih ihn meistens bneutzte ist bei return statements wenn beide if statements nur eine kurze zeile als anweisung hat zb

Java:
if(xyz )
    return false;
else
    return true;

=>

return xyz ? true : false;
Das Beispiel ist so nicht wirklich gut und ich würde Dir unterstellen, dass Du da auch einfach ein return xyz; schreiben wirst.

Aber wenn Du true / false mit anderen Werten ersetzt, dann wird es natürlich verständlich.
 
Das Beispiel ist so nicht wirklich gut und ich würde Dir unterstellen, dass Du da auch einfach ein return xyz; schreiben wirst.

Aber wenn Du true / false mit anderen Werten ersetzt, dann wird es natürlich verständlich.
mnja das beispiel war blöd gewählt xD

es würde mehr so sinn machen ohne die komplexität zu übertreiben
Java:
return xyz ? 1 : 0;
 
Vielen Dank für die Infos. Selbst würde ich, dass nicht wählen. Habe es in einer Programmanalyse einer Klausur gesehen und man sollte den Code auswerten. Ich weiß aber nicht was es bedeutet. Noch eine Frage zu meinem Code, wann evaluiert "enc" zu true? Eine weitere Methode namens enc ist nicht genannt im Text.

Vielen Dank
 
enc ist doch ein Parameter der Methode:
public static String gaius(String s, boolean enc)
Sprich: Da muss ein Wert (true oder false) übergeben werden.
 
mnja das beispiel war blöd gewählt xD

es würde mehr so sinn machen ohne die komplexität zu übertreiben
Java:
return xyz ? 1 : 0;
Nur als ergänzende Info: Im true / false Beispiel hast du auch einmal true und false vertauscht. Im Ur-Ausdruck kommt !xyz heraus, im Beispiel mit dem ?-Operator kommt xyz heraus.
 
Nur als ergänzende Info: Im true / false Beispiel hast du auch einmal true und false vertauscht. Im Ur-Ausdruck kommt !xyz heraus, im Beispiel mit dem ?-Operator kommt xyz heraus.
ja nur nach genauerem nachdenken war das ur beispiel relativ nutzlos, daher hab ich nichts mehr daran geändert

das neue beispiel könnte man ja mit int als rückgabe bauen oder sonst irgendwas machen
 

Zurück
Oben