0

我在学校做一个项目,如果我们应该模拟一个投注场景,我们有这个代码开始;

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

然而,我们的任务是更改此代码,以便对于每一次下注,都应该为下注后的每一美元打印一个“*”。

因此,例如,如果我们在第一次下注后赢了 1 美元,并且我们以 5 美元作为赌注开始,那么程序应该打印 6“*”,然后为下一次下注做同样的事情,反之亦然。

我尝试了不同的方法,但似乎可以让它正常工作,因此我请你们在这里寻求一些建议/帮助。

到目前为止,这就是我想出的;

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

1 回答 1

0

我会将您的 while 块更改为:

    // 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();
    }

这至少应该可以帮助您发现问题。

于 2017-09-11T18:14:43.193 回答