Ich führe eine Glücksspiel-Simulation und ich kann nicht herausfinden, warum die End Bank manchmal unter Null oder über 250 ist. Ich habe eine For-Schleife direkt nach der While-Schleife, die die Simulation 100 Mal wiederholt. Denken Sie daran, meine Variablen aus einer Textdatei gelesen. Und die While-Schleife läuft nur, wenn der Spieler über 0 Dollar und unter 250 hat, aber die Endbank ist irgendwann über oder unter.Java - While-Schleife weiterhin außerhalb der Bedingungen ausgeführt?
- Spieler beginnt mit 50 und stoppt bei $ 0 oder $ 250.
- While-Schleife läuft nur, wenn der Spieler über $ 0 oder unter $ 250 hat.
- For-Schleife direkt nach While-Schleife wiederholt die gesamte Simulation 100-mal.
- Teil 2 ist derzeit inaktiv, also mach dir keine Sorgen.
Irgendwelche Ideen? Hier ist mein Code:
import java.io.*;
import java.util.Scanner;
public class GamblersRuin {
public static int bank;
public static int goal;
public static int beta;
public static double prob;
public static int numberofb;
public static String yesn;
public static int rounds;
public static int newbank;
public static String s = ("stuff");
public static void main(String[] args) throws FileNotFoundException {
Scanner scan = new Scanner(System.in);
Scanner file = new Scanner(new File("numbers.txt"));
//Variables
bank = file.nextInt();
goal = file.nextInt();
beta = file.nextInt();
prob = file.nextDouble();
numberofb = 0;
String yesn = file.next();
rounds = file.nextInt();
newbank = bank;
//Logic
while(bank > 0 && bank < goal) {
for(int i = 0; i <= rounds; i++) {
bank -= beta;
//Win
if(Math.random() < prob) {
bank += (1/prob) * 1;
numberofb += 1;
}
if(yesn.equals("Y")) {
for(int y = 0; y < bank; y++) {
System.out.print("*");
}
System.out.println();
}
}
}
//Main Output
System.out.print("==Gambling Simulation==\n");
System.out.printf("Starting Bank: " + bank + "\n");
System.out.printf("Goal: 250.00\n");
System.out.printf("Bet Amount: 1.00\n");
System.out.printf("Probability: 50%%\n");
System.out.printf("========Results========\n");
System.out.printf("Number of Bets:%9s", numberofb + numberofb + "\n");
System.out.printf("End Bank:%14s\n", bank);
}
}
Ihre Schleifen sind invertiert. Denken Sie: Was wollen Sie 100 mal laufen lassen? Es kann (wahrscheinlich) andere Probleme geben, aber das ist die Hauptsache. –
Ich möchte die ganze Simulation 100 mal wiederholen, ich möchte das Glücksspiel bis zum Konkurs wiederholen oder habe 250, 100 mal. –
Also welche Schleife sollte die "äußere" sein? –