-1
コイントスをシミュレートし、3つの "ヘッド"を連続して取得するのに必要なトース数を出力するプログラムをJavaで作成します。このプログラムはまた、シミュレートされた投球を行った「頭」および「尾」を画面に出力します。たとえば、出力を生成することが、あなたのプログラムは次のように:Javaプログラムの3つのヘッド?
- 例1:HTHHH
- 例2:今すぐTTTHTHHTTTTHHH
私はそれを実行すると、それは連続Hを出力し、無限に実行されます。それは反転しない尾も、頭だけ。だから誰かが私のコードを修正するのを助けることができます.....ありがとう。
マイコード:
import java.util.*;
public class threeHeads {
public static void main(String[] args) {
boolean first = false;
boolean second = false;
int count = 0;
Random random = new Random();
while(true){
int n = random.nextInt(2) + 1; //1 is Heads, 2 is Tails
if (n == 1){
System.out.println("H");
count++;
if (first == false){
first = true;
} else if (second == false){
second = true;
} else if (second == true){
break;
}
}
else {
System.out.println("T");
first = false;
second = false;
count++;
}
}
if (count == 3){
System.out.println(count);
}
}
}
欲しいものを達成した場合、このコードを参照するために試してみる...'、全体の残りの部分ブロックは最後の2つの代入( 'first = false; second = false')まで' if(n == 1) 'ブロック内にあります。つまり、ループは 'n == 1 'の場合にのみ何も行いません。そうでなければ、次の繰り返しに進むでしょう。 (このようなことは、適切な書式設定が非常に役に立つ理由の1つです!) – yshavit
また、 'someBoolean == true'または' someBoolean == false'をチェックする必要はありません。 'someBoolean'または'!someBoolean'を実行してください。 'if(!second)'チェックがある場合、 'else if(second)'の後には必要ありません。 'else'だけで十分です。なぜなら、secondがfalseでなければtrueでなければならないからです。これは、 'second!= false'と' second!= true'の場合にのみ発生します(そうでなければ、コードは1つを打つでしょう)それらの2つのブロックのうちの1つ)は、当然のことではない。 – yshavit
'random.nextBoolean()'を使わないのはなぜですか? – shmosel