Frage von gerlochi, 17

Wie ändere ich diese Variable(Java)?

Hallo, ich habe hier ein bisschen Code:

http://pastebin.com/EmM9ygZt

Aber wenn ich diesen ausführe wird var nicht ausgegeben, ausgegeben wird die Variable schon, bloß halt null. In dem ersten If wird die Variable nicht geändert, wieso und wie kann ich den Input in If 1 Speichern so das es in If 2 ausgegeben wird?

PS: Ich weiß dieser Code ist sinnlos aber ich brauche die Lösung für mein Programm in der ein ähnliches Codestück steht, lediglich die bedingung von den If's ist anders.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 17

Erstmal danke dass du als Fragesteller Code vernünfig zur Verfügung stellst.

Die Variable wird nicht ausgegeben, da du ein "else if" verwendest.

d.h. geht die Bedingung schon bei deinem ersten if-block in Erfüllung, werden andere 'else' Verzweigungen einfach ignoriert, da die Bedingung ja erfüllt wird.

Die Bemerkung:

ausgegeben wird die Variable schon, bloß halt null

kann nicht ganz stimmen. - Wenn du über Scanner einen Wert abfrägst, nimmt deine Variable erst den wert an, wenn du auf der Console auch den wert eingegeben  und mit enter bestätigt hast.

wenn du möchtest, dass deine Variable ausgegeben wird, beginne mit einer neuen IF Bedingung:

if (x ==1) {
   ...
}
if (x == 2) {
...
}
Kommentar von gerlochi ,

ich brauche das else if leider, gibt es noch eine andere möglichkeit?

Kommentar von KnusperPudding ,

was meinst du mit: 

ich brauche das else if leider

Es ist schlichtweg falsch an der Stelle in Verbindung mit dem gegebenen Kontext.

wenn du eine Fallunterscheidung mit "if", "else if" und "else" machst, führt das IMMER dazu, dass sobald eine Bedingung wahr ist, die Fallunterscheidung beendet ist.

if (x == 1) {
    ...
} else if (x == 2) {
    ...
} else {
    ...
}

Hier handelt es sich um eine Fallunterscheidung mit 3 Möglichkeiten:
x entspricht 1, x entspricht 2, oder x entspricht etwas anderem. Und dementsprechend wird der Code auch nur an der ersten wahren Bedingung ausgeführt und anschließend der Fallunterscheidungs-Block verlassen.

wenn du innerhalb einer Fallunterscheidenen Funktion die Entscheidungsvariable ändern möchtest, sodass eine andere Bedingung eintritt, so solltest du switch-case verwenden:


switch (x) {
    case 1:
        var = in.nextLine();
        x++;
    case 2:
        System.out.println("Die Eingabe war: " + var); 
        break;
}

Wenn es das auch nicht ist, dann hast du dich falsch ausgedrückt, ich verstehe sonst nicht was du sonst noch meinen könntest.

Kommentar von gerlochi ,

danke!

Antwort
von luckynoob14, 17

Mach mal das Else if weg und benutze nur if beim zweiten.

In deinem Code kommt er nie in die zweite Bedingung.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten