Wie kann ich in einer Java while-Schleife Zufallszahlen generieren?
Hallo,
Ich müsste in einer Java while-Schleife eine Zufallszahl ausgeben, diese müsste bei jeder Wiederholung (in der Schleife) eine neue Zufallszahl von 0-9 generieren. Bei mir kommt aber immer wieder die gleiche Zahl.
Weiss jemand wie das geht? Nebenbei müsste das Programm einfach sobald die Zahl 7 erscheint stoppen. Bis anhin habe ich mal das:
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rn = new Random();
int zahl = rn.nextInt(10);
while (zahl < 10) {
if (zahl != 7){
System.out.print(zahl);
} else if (zahl == 7) {
System.out.print(zahl);
break;
}
}
}
}
Danke für eure Hilfe!
5 Antworten
Du musst dein Code wie folgt ändern:
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rn = new Random();
while (zahl < 10) {
int zahl = rn.nextInt(10);
if (zahl != 7){
System.out.print(zahl);
} else if (zahl == 7) {
System.out.print(zahl);
break;
}
}
}
}
Das einzige was ich gemacht ist das int zahl = rn.nextInt(10); in die Schleife zu machen.
Haha selber Fehler wie ich :D
Du darfst die Zahl hier nich in der Schleife deklarieren. ^^
Du erzeugst die Zufallszahl vor der while-Schleife und gibst diese danach mehrfach aus. Es ist aber immer die gleiche, weil du sie ja nur einmal erzeugst und die Variable 'zahl' nur einmal zu Beginn ihren Wert ändert.
Erzeuge die Zufallszahlen also in der while-Schleife.
Du musst die Zahl Logischerweise in der while Schleife generieren.
Du generierst sie ja nur einmal.
Aufgrund der Logik reicht ein einfaches while (zahl != 7) und du kannst dir das if-else sparen. Die anderen scheinen außerdem zu vergessen, dass du zahl schon vor der Schleife deklarieren musst.
Die anderen scheinen außerdem zu vergessen, dass du zahl schon vor der Schleife deklarieren musst.
Ich denke das vergisst hier keiner, aber auch ich habe es einfach nicht genauer erklärt, weil das der Fragesteller selbst hinbekommen sollte.
Pack das
int zahl = rn.nextInt(10);
in die while-Schleife.
Upsi. Mach die Deklarierung ausserhalb der Schleife:
int zahl;
Und dann innen die Zuweisung:
zahl = rn.nextInt(10);