1

ここでは、!= 0; を使用して、このネストされた for ループのゼロを除外しようとしています。しかし、それは何もしていません。私は、転がされたときに2つの6面サイコロが出る確率を取得しようとしています。最初に出た回数を計算する必要がありますが、サイコロには 0 が含まれていないため、除外する必要があります。なぜこれが機能しないのかわかりません。

for( die2 = 0; die2 <= 6 && die2 != 0; die2++)
            for( die1 = 0; die1 <= 6 && die1 != 0; die1++)
                System.out.println("Die 2: " + (die2 * userInputValue) + " " + "Die 1: " +       (die1 * userInputValue));
4

2 に答える 2

2

1の代わりにループを開始するだけです0

for(int die2 = 1; die2 <= 6 ; die2++)
            for(int die1 = 1; die1 <= 6 ; die1++)
                System.out.println("Die 2: " + (die2 * userInputValue) + " " + "Die 1: " +       (die1 * userInputValue));
于 2012-10-15T03:32:32.473 に答える
2

ループは 0 ではなく 1 から開始する必要があります。

現在のコードを見てみましょう。

for (die2 = 0; die2 <= 6 && die2 != 0; die2++)
    for (die1 = 0; die1 <= 6 && die1 != 0; die1++)
        // Do something

なぜあなたは何かをする行を打たないのですか?このコードのチャンクは同等(*)です

die2 = 0;
while (die2 <= 6 && die2 != 0) {
    die1 = 0;
    while (die1 <= 6 && die1 != 0) {
        // Do something
        die1++;
    }
    die2++;
}

最初の条件チェックdie2は 0 であることに注意してください。ただし、ループに入ると常にdie20 になることに注意してください。これは、設定したものであるためです。代わりに、使用する必要があります

for (die2 = 1; die2 <= 6; die2++)
    for (die1 = 1; die1 <= 6; die1++)
        // Do something

そもそもdie2orを 0 に設定したことがないため、0 をスキップします。die1


(*) while ループのこの書き換えは、for ループと完全に同等ではありません。なぜなら、この書き換えはステートメントのセマンティクスを保持しないためですcontinueが、あなたのコードは continue を使用していないため、この場合は元のループと同等です。 .

于 2012-10-15T03:32:35.953 に答える