2017-09-11 1 views
0

Ich mache ein Projekt in der Schule, wo wir ein Wetterszenario simulieren sollten, hatten wir diesen Code zu beginnen;Fehlerbehebung mit "Gambler-Code"

http://introcs.cs.princeton.edu/java/13flow/Gambler.java.html

jedoch unsere Aufgabe, war diesen Code zu ändern, so dass für jede Wette, die angeblich gemacht haben wurden für jeden Dollar eines „*“ zu drucken, die wir nach dieser Wette haben.

Wenn wir zum Beispiel 1 $ nach der ersten Wette gewinnen und wir mit 5 $ als Einsatz beginnen, dann sollte das Programm 6 "*" drucken und dann dasselbe für die nächste Wette machen und umgekehrt.

Ich habe verschiedene Dinge ausprobiert, aber kann scheinen, damit es richtig funktioniert, deshalb bitte ich dich, Kerl ist hier für einige Beratung/Hilfe.

Das ist, was ich bis jetzt gekommen bin;

public class GamblerStars { 

    public static void main(String[] args) { 
     int stake = Integer.parseInt(args[0]); // gambler's stating bankroll 
     int goal = Integer.parseInt(args[1]); // gambler's desired bankroll 
     int trials = Integer.parseInt(args[2]); // number of trials to perform 

     int bets = 0; // total number of bets made 
     int wins = 0; // total number of games won 

     // repeat trials times 
     for (int t = 0; t < trials; t++) { 
      int cash = stake; 
      int star = 0; 

      while (cash > 0 && cash < goal) { 
       bets++; 

       if (Math.random() < 0.5) { 
        cash++; // win $1 

        while (star <= cash) { 
         star++; 
         System.out.print("*"); 
        } 

       } else { 
        cash--; // lose $1 

        while (star <= cash) { 
         star--; 
         System.out.print("*"); 
        } 
       } 
       System.out.println(""); 
      } 
      if (cash == goal) 
       wins++; // did gambler go achieve desired goal? 
     } 
     System.out.println(wins); 
    } 
} 

Antwort

0

würde ich Ihr, während Block dies ändern:

// it's always a good idea to parametize your conditions 
    while ((cash > 0) && (cash < goal)) { 
     bets++; 

     if (Math.random() < 0.5) { 
      cash++; // win $1 
     } 
     else { // move the else up here, so it's parallel to the win 
      cash--; // lose $1 
     } 

     // you only need one block to print the stars, not two 
     while (star <= cash) { 
       star++; 
       System.out.print("*"); 
     } 

     // you don't need to use a parameter to just print a newline    
     System.out.println(); 
    } 

, dass zumindest helfen Ihnen Ihr Problem erkennen sollte.