所以我有一個模擬骰子游戲的問題。除了while循環內的while循環外,一切都正常運行。在調試時,sum
變量正在保留其值,newSum
變量在每次迭代中都會發生變化,並且經常會觸及7和sum
變量的值。如果我將嵌套的while循環註釋掉,並將其作爲wins++;
,則代碼將正確執行,以達到期望值。所以我很確定這個問題在嵌套循環中。while循環中的無限while循環java
感謝您的所有輸入!
import java.util.Random;
import java.text.DecimalFormat;
public class Ch3Ex2
{
public static void main (String[] args)
{
Random rng = new Random();
int counter = 0;
int sum = 0;
int wins = 0;
int losses = 0;
int newSum = 0;
int reroll1 = 0;
int reroll2 = 0;
while (counter < 10000)
{
int die1 = rng.nextInt(6) + 1;
int die2 = rng.nextInt(6) + 1;
sum = die1 + die2;
if ((sum == 7) || (sum == 11))
wins++;
else if ((sum == 2) || (sum == 3) || (sum == 12))
losses++;
else
{
while((newSum != sum) || (newSum != 7))
{
reroll1 = rng.nextInt(6) + 1;
reroll2 = rng.nextInt(6) + 1;
newSum = reroll1 + reroll2;
}
if (newSum == sum)
{
wins++;
}
else
{
losses++;
}
}
counter++;
}
DecimalFormat percent = new DecimalFormat("0.00%");
double winDenom = wins + losses;
double winRate = wins/winDenom;
System.out.print("Your chance of winning a game of craps is : ");
System.out.println(percent.format(winRate));
}
}
除非'sum'等於'7',否則至少有一個條件總是「真」。 –
調試你的代碼。 – Maroun
蹩腳的代碼格式化和不連貫的括號風格的問題是,那個人會遇到許多錯誤,否則就不會想到。 – Smutje