3

ほとんどの人にとってはかなり些細な問題だと思いますが、以前のサイコロの整数をプログラム内の以前のサイコロのロールと同じままにする方法を完全に理解することはできません。コードはかなり自明だと思いますが、これは非常に些細なプログラムであり、理解できないことに自分自身を蹴っています。

import java.util.Random;

public class Dice {

    public static void main(String[] args) {
        Random rand = new Random();
        int min = 1;
        int max = 6;
        int loop = 0;
        int diceRollOne = 0;
        int diceRollTwo = 0;
        int diceTotal = 0;
        int prevDiceTotal = 0;

        while (loop < 15000) {
            loop++;
            diceRollOne = rand.nextInt(max - min + 1) + min;
            diceRollTwo = rand.nextInt(max - min + 1) + min;
            diceTotal = diceRollOne + diceRollTwo;

            System.out.println("Dice Roll 1: " + diceRollOne);
            System.out.println("Dice Roll 2: " + diceRollTwo);
            System.out.println("Dice Total: " + diceTotal);
            System.out.println("previous total: " + prevDiceTotal);

            prevDiceTotal = diceTotal;

            if (diceRollOne == diceRollTwo || diceTotal == prevDiceTotal) {
                System.out.println("After " + loop + " loops the");
                System.out.println("Numbers Match, YOU GET NOTHING, YOU LOSE, GOOD DAY SIR!");
                System.exit(0);
            }
        }
    }
}

基本的な考え方は、15,000 回のシミュレーションです。サイコロを2つ振る。ダブルクイットをロールした場合。現在のロールで前のロールの合計と同じ合計をロールした場合は、終了します。以前のサイコロの合計を出力してデバッグを試みましたが、毎回デフォルトでゼロになります。

4

3 に答える 3

3

prevDiceTotal = diceTotal;if ステートメントの後にto を移動したいだけです。

        if (diceRollOne == diceRollTwo || diceTotal == prevDiceTotal) {
            System.out.println("After " + loop + " loops the");
            System.out.println("Numbers Match, YOU GET NOTHING, YOU LOSE, GOOD DAY SIR!");
            System.exit(0);
        }

        prevDiceTotal = diceTotal;
于 2013-05-15T00:59:24.427 に答える
2

次のものがあります。

prevDiceTotal = diceTotal;

if(diceRollOne == diceRollTwo || diceTotal == prevDiceTotal){

現在書かれているように、それはTrueif-expressionであることが保証されています。

ブロックの後に割り当てを移動しますif

于 2013-05-15T00:59:40.050 に答える
1

ここで、優れた IDE が役に立ちます。IntelliJ IDEA (無料のCommunity Editionがあります) がコードに対して表示する内容は次のとおりです。if()問題の説明とともにステートメントが強調表示されていることに注意してください。

IntelliJ スクリーンショット

prevDiceTotal他の人が言ったように、ブロックの後に割り当てを移動しif()て問題を解決します。

于 2013-05-15T01:35:28.853 に答える