所以我有一个模拟骰子游戏的问题。除了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