Java, while loop mit Random Zahlen?

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

Woher ich das weiß:Studium / Ausbildung – Studiere angewandte Informatik

meico2000  24.08.2020, 10:29

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

0

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);

Woher ich das weiß:Berufserfahrung – Freiberuflicher Java Entwickler mit 10 Jahren Erfahrung

xJumax 
Fragesteller
 24.08.2020, 10:25

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.

0
alfredo153  24.08.2020, 10:26
@xJumax

Wie soll sie stoppen, wenn du immer nur die erste Zufallszahl in die Variable "zahl" schreibst, aber keine der danach gezogenen?

0
Xearox  24.08.2020, 10:27
@xJumax

Die Zuweisung auf die variable muss in die Schleife. Außerhalb kannst du einfach

int zahl = 0;

Machen.

0
Xearox  24.08.2020, 10:31
@xJumax
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.

0
xJumax 
Fragesteller
 24.08.2020, 10:38
@Xearox

Alles klar, hat jetzt endlich funktioniert! Vielen Dank für die Mühe und sorry für die Umstände :)

0
Xearox  24.08.2020, 10:39
@xJumax

Hast du denn verstanden, wo dein Fehler lag?

0
erdnaskram  24.08.2020, 10:47
@xJumax

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);

      }

   }

}   

0