我被困在一个我不知道如何解决的问题上。我正在尝试使用 RandomGenerator 来模拟掷硬币,直到 RandomGenerator 连续翻转 3 个正面,然后程序退出。
变量flipCounter 跟踪翻转的总数,变量headsFlip 跟踪被翻转的连续磁头。if 条件表示如果翻转是正面,则 headFlips 计数器最多为 3,但如果下一次翻转是尾部,则 headFlips 重置为零。
当我运行程序时,它只打印我的 run 方法中的最后一条语句,甚至不运行 while 循环。我不知道为什么程序没有像我期望的那样工作。
import acm.program.*;
import acm.util.*;
public class HeadsFlipThreeInARow extends ConsoleProgram{
public void run(){
int flipCounter = 0;
int headsFlip = 0;
while (headsFlip == 3){
String flip = coinFlip();
println(flip);
if (flip.equals("heads")){
headsFlip += 1;
}else{
headsFlip = 0;
}
flipCounter++;
flip = coinFlip();
} /* end of while loop */
println("It took " + flipCounter + "flips to reach 3 consecutive heads.");
} /* end of run method */
private String coinFlip (){
String flip = rgen.nextBoolean() ? "heads" : "tails";
return flip;
}
private RandomGenerator rgen = RandomGenerator.getInstance();
}