2

解き方がわからない問題で困っています。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();

}
4

3 に答える 3

6
while (headsFlip == 3){

これはいけません

while (headsFlip < 3){
于 2013-06-21T00:38:38.307 に答える