4

私は独学で Java を学んでおり、クラップスのゲームをシミュレートするプログラムを作成しました。ゲーム全体をブールメソッドで持っています。すべて正常に動作しますが、ユーザーが勝つたびにカウントしたいと考えています。これらの勝利を数えて印刷する最良の方法は何ですか?

これが私のコードです:

import java.util.Random;

public class game{

public static void main(String[] args) {
    Random rand = new Random();
    for(int i = 0; i <= 10; i++){
        craps(rand);
    }
}

public static boolean craps(Random randomGen){
    int roll1 = randomGen.nextInt(6) + 1;
    int roll2 = randomGen.nextInt(6) + 1;

    int sum = roll1 + roll2;
    int sumRepeat = sum;
    int count = 0;


    String win = "you win";
    String lose = "you lose";
    String point = "point=";

    if(sum == 7 || sum == 11){
        System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,win);
        count++;
        return true;
    }
    else if(sum == 2 || sum == 3 || sum == 12){
        System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,lose);
        return false;
    }
    else{
        System.out.printf("[%d,%d] %s %d",roll1,roll2,point,sum);
        int roll3 = randomGen.nextInt(6) + 1;
        int roll4 = randomGen.nextInt(6) + 1;
        int sum2 = roll3 + roll4;
        do{
            roll3 = randomGen.nextInt(6) + 1;
            roll4 = randomGen.nextInt(6) + 1;
            sum2 = roll3 + roll4;
            if(sum2 == sumRepeat){
                System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,win);
                count++;
                return true;
            }else{
                System.out.printf("[%d,%d]",roll3,roll4);
            }
        }
        while(sum2 != 7);{
            System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,lose);
            return false;
        }
    }
}
}

count 変数を返そうとしましたが、期待した Boolean メソッドから int 値を返すことができないというエラーが表示されます。しかし、カウント値を出力しようとしましたSystem.out.println();が、println に到達できないコードであるというエラーが常に表示されるため、コード内に配置する場所が見つかりません。

どんな助けでも大歓迎です。ありがとう!

これがプログラムの出力です

[1,6] 7 勝ち

[2,4] ポイント= 6[3,6][3,3] 6 勝ち

[3,3] ポイント= 6[5,1] 6 勝ち

[6,1] 7 あなたの勝ち

[6,3] ポイント= 9[5,1][3,5][2,6][6,4][5,6][1,5][6,3] 9 勝ち

[3,3] ポイント= 6[1,5] 6 勝ち

[5,1] ポイント= 6[1,5] 6 勝ち

[2,2] ポイント= 4[6,4][3,3][3,4][3,4] 7 負け

[4,5] ポイント= 9[6,4][5,1][1,2][6,2][1,5][3,5][6,5][1,5][5 ,2][5,2] 7 失う

[2,2] ポイント = 4[5,3][5,6][6,4][3,2][6,5][3,6][4,4][4,2][4 ,3][4,3] 7 失う

[6,6] 12 負け

11 回勝利しました。

4

2 に答える 2

8

craps関数の外でそれらを数えます。これは簡単な方法の 1 つです。

public static void main(String[] args) {
    Random rand = new Random();
    int counter = 0;
    for(int i = 0; i <= 10; i++){
        if(craps(rand)) counter++;
    }

    System.out.println("You won " + counter + " times!");
}

ところで、craps関数を変更するよりも、関数の外でカウントする方がはるかに優れていることに注意することが重要です。Java を学習するときは、各メソッドが 1 つのジョブのみを実行する必要があることを覚えておいてください。crapsこの哲学を実践するために、関数をより小さな断片に分割する練習をしたいと思うかもしれません。1 つのジョブに 1 つの方法という哲学により、大規模なプロジェクトは、後で振り返ったときに理解しやすく、デバッグしやすくなります。

于 2012-11-15T17:35:23.107 に答える
2
int wins = 0;
for(int i = 0; i <= 10; i++){
    if(craps(rand)) {
        wins++;
    }
}

// Print a friendly message including `wins`
于 2012-11-15T17:36:52.917 に答える