解き方がわからない問題で困っています。RandomGenerator を使用して、コインを弾くのをシミュレートしようとしていますが、RandomGenerator が 3 つの連続した表を反転し、その時点でプログラムが終了します。
変数 flipCounter はフリップの総数を追跡し、変数 headFlip はフリップされた連続するヘッドを追跡します。if 条件は、フリップが表である場合、headsFlips カウンターを 3 まで開始することを示しますが、次のフリップが裏である場合、headsFlips はゼロにリセットされます。
プログラムを実行すると、実行メソッドの最後のステートメントが出力されるだけで、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();
}