Java, while loop mit Random Zahlen?
Hallo zusammen,
muss bei dieser Übungsaufgabe in Java eine while loop generieren mit random Zahlen zwischen 1-9. Wenn die Zahl 7 erscheint, dann soll die Schleife gestoppt werden.
Ich habe es mal so probiert wie im Anhang, dort gibt es mir einfach endlos die Zahlen aus, es stoppt allerdings nicht beim Sieben.
Danke schon mal für die Hilfe :)
4 Antworten
So wie ich das sehe kontrollierst du die Variable zahl, aber gibst den randome generierte zahl dierekt aus, speicher die randome zahl in der Variable und gib die Variable aus ( alles in der Schleife) dann sollte es gehen
Denn du speicherst oben eine randome zahl in Zahl z.b. 5 dann bleibt diese und wird nie geändert obwohl du als User viele zahlen siehst
Der Code wie ich ihn meine:
Oben die Zahl brauchst du noch nicht eine randome zahl geben, gib ihr einfach 0 weil sonst springt er dierekt raus wenn du mal zufällig dierekt die 7 triffst
While()...
Zahl = rn.nextInt(10);
Print(""+zahl);
If zahl = 7 break
Naja, Du änderst ja nie die Variable "zahl" - wie soll die dann einen anderen Wert erhalten, als den, den sie schon zu Anfang hatte?
Der korrekte Code wäre
int zahl = rn.nextInt(10);
while (zahl != 7) {
System.out.println(zahl.toString());
zahl = rn.nextInt(10);
}
System.out.println("Die 7 wurde gezogen");
Das Problem ist, dass du in jedem Durchlauf prüfst, ob die Variable "zahl" gleich 7 ist, aber du änderst den Inhalt der Variablen in den einzelnen Durchläufen überhaupt nicht; das heißt, wenn die Zahl am Anfang nicht 7 ist, wird sie es auch niemals sein!
Was dir fehlt, ist eine Zeile wie
zahl = rn.nextInt(10);
in deiner Schleife.
Du musst auch das rn.next in die Schleife packen, damit immer wieder neue Zahlen generiert werden.
Also das zahl = rn.next(10);
Und im System.out machst du nicht rn.next sondern Zahl. Also System.out.println(zahl);
Wie soll sie stoppen, wenn du immer nur die erste Zufallszahl in die Variable "zahl" schreibst, aber keine der danach gezogenen?
Die Zuweisung auf die variable muss in die Schleife. Außerhalb kannst du einfach
int zahl = 0;
Machen.
package net.gutefrage.random;
import java.util.Random;
public class GfRandom {
public static void main(String[] args) {
int zahl = 0;
Random random = new Random();
while(zahl != 7) {
zahl = random.nextInt(10);
System.out.println(zahl);
}
}
}
So geht es.
Alles klar, hat jetzt endlich funktioniert! Vielen Dank für die Mühe und sorry für die Umstände :)
import java.util.random;
public class Main {
public static void main(String[] args) {
Random rn = new Random();
int zahl = 0;
while (zahl!=7){
zahl = rn.nextInt(10);
System.out.print(zahl);
}
}
}
Darf ich fragen wie du in die Schleife packen meinst? Wenn ich es in die Bedingung statt der int variabel packe, dann kommt immer der Fehler "cannot find symbol". Das Problem ist, dass die Schleife eben nicht beim 7 stoppen will.