0 Daumen
166 Aufrufe

Folgender Javacode soll mir eigentlich immer einmal "true" und zweimal "false" ausgeben, aber ich bekomme bei x, y und z die Fehlermeldung "cannot be resolved to variable". Ich bin ganz neu bei Java und beim Programmieren allgemein und sehe nicht, wo mein Fehler liegt.

public class Random {

public static void main(String[] args) {

boolean x=Math.random() < 0.5;

if(x==true) {
boolean y = false;
boolean z = false;
}

else if(x==false) {

boolean y=Math.random() < 0.5;

if(y==true) {
boolean z = false;
}

else if(y==false)  {
z = true;
}

}

System.out.println(x);
System.out.println(y);
System.out.println(z);

}

}

von

1 Antwort

+1 Daumen
 
Beste Antwort

Dein Problem liegt im Scope der einzelnen Variablen.

Was für einen Sinn hat

if(x==true) {
boolean y = false;
boolean z = false;
}
?

Ein Test der Form y==true ist nicht nötig. Es reicht y, da y schon entweder true oder false ist.

Für die Zukunft bitte einen Account erstellen und darüber posten.

von


Meinst du so? Hier bekomme ich den Fehler nicht mehr fuer x, aber immernoch fuer y und z.

public class Random {
public static void main(String[] args) {

boolean x=Math.random() < 0.5;

if(x) {
boolean y = false;
boolean z = false;
}
else {
boolean y=Math.random() < 0.5;
if(y) {
boolean z = false;
}
else  {
z = true;
}

}

System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}

Du musst die Variablen alle AUßERHALB der If-Anweisungen definieren. In If-Anweisungen kannst Du dann eine Wertzuweisung (ohne den Datentyp) vornehmen. Also z. B.:

boolean x = true;
boolean y = false;
if(x){
y = true;
}

Jetzt funktioniert das ganze. Vielen Dank!

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community