Was habe ich beim Würfel falsch gemacht?

5 Antworten

Woran macht es sich bemerkbar, dass da ein Fehler auftritt?

zufallszahl ist bei Schleifeneintritt (Prüfen der Bedingung) noch nicht definiert, ja nicht einmal deklariert. Entweder außerhalb der Schleife deklarieren und definieren (empfohlen), oder irgendwie innerhalb (da wüsste ich jetzt nicht wie)

Schau dir auch die Abbruchbedingung noch einmal genau an: ist die so richtig?

Wäre ggf. eine do ... while - Schleife angemessener? (Wieder mit der Frage nach der richtigen Abbruchbedingung)

Dann: Typecast zu int rundet. Gesucht ist aber die nächstniedrigere ganze Zahl. Also entweder noch ein Math.floor einbauen oder das "+ 1" durch "+ 0.5" ersetzen.

Die Schleife läuft nur falls die Zufallszahl 6 ist. Du möchtest aber das die Schleife läuft bis die Zufallszahl 6 ist, also while(Zufallszahl != 6)

!= Ist der Operator für ungleich.

TUrabbIT  24.02.2017, 01:15

ach und die Zufallszahl muss vor der ersten Verwendung definiert werden.

0

ich hab dir eine saubere, kurze Lösung erstellt

int r;
do{
r = new Random().nextInt(6)+1;
System.out.println("Du hast eine "+r+" gewürfelt.");
}while(r!=6);

Thomas416  09.07.2020, 12:55

Hier wird in jedem Schleifendurchlauf ein neues Random-Objekt erzeugt und initialisiert. So ist das eigentlich nicht gedacht.

int r;
Random Rn = new Random();
do {
   r = Rn.nextInt(6)+1;
   System.out.println("Du hast eine "+r+" gewürfelt.");
} while (r != 6);
0

Mach aus dem == mal ein !=, denn sonst gibst du die Zahl nur aus, wenn sie 6 ist.
Und wenn ich mich nicht täucshe, wirst du auch mit deinem Math.random keine Zufallszahl zwischen 1 und 6 bekommen.

Kiwischuhe 
Fragesteller
 23.02.2017, 21:15

Math.random funktioniert. Habe es schon mit einer anderen Methode gemacht wo ich nur einmal würfel.

0
PWolff  23.02.2017, 22:58
@Kiwischuhe

Aber funktioniert es auch so, wie es soll? Ich meine jetzt nicht random an sich, sondern das Zeug drumherum, dass eine ganze Zahl draus macht. Ich bin ziemlich sicher, dass da Zahlen zwischen 1 und 7 (einschließlich!) herauskommen können.

0
bananaphone2015  24.02.2017, 00:07
@PWolff

An sich funktioniert das, allerdings kam bei mir eben, als ichs getestet hab, so oft 0 oder 1 raus, dass das nicht mehr nach Zufall aussah... :D

0

Du musst die Variable vor der Schleife erstellen.

Kiwischuhe 
Fragesteller
 23.02.2017, 21:15

Also?

0
Tronert123  23.02.2017, 21:19
@Kiwischuhe

int zufallszahl=(int) ((Math.random()*6)+1);

while (true){

          if(zufallszahl==6){

             System.out.println(zufallszahl);

      }
}

Das sollte funktionieren. 

Wenn du möchtest, dass die Schleife zuende ist, wenn die 6 gewürfelt wurde, dann könntest du einen Boolean erstellen und diesen auf false setzten, wenn 6 gewürfelt wurde:

int zufallszahl=(int) ((Math.random()*6)+1);

boolean laufen = true;

while (laufen){

          if(zufallszahl==6){

             System.out.println(zufallszahl);

              laufen = false;

      }
}

1
Kiwischuhe 
Fragesteller
 23.02.2017, 21:40
@Tronert123

Jap. Hast bei mir im Kopf grad nen Schalter umgelegt. Danke :D

0
PWolff  23.02.2017, 22:59
@Tronert123

Potentielle Endlosschleife - zufallszahl wird in der Schleife nicht geändert

0
Borgler94  24.02.2017, 15:38
@Tronert123

du musst die zufallszahl in der letzten zeile der schleife ändern

0