2015-01-24 3 views
0

Это случайным образом печатает головы или хвосты, и если головы печатаются 3 раза подряд, я сообщаю об этом. Прямо сейчас у меня это так, если 3 головы напечатаны, что они сообщают об этом. Спасибо.Печать что-то 3 раза подряд и запись?

public static void flip(Random r){ 
    int heads = 0; 
    int totalFlips = 0; 
    Random number = new Random(); 
    int randomNumber; 
    do { 
     randomNumber = number.nextInt(2)+1; 
     if(randomNumber == 1){ 
      System.out.println("heads"); 
      heads++; 
      totalFlips++; 
     } 
     else { 
      System.out.println("tails"); 
      totalFlips++; 
     } 
    } while(heads < 3); 

    if(heads == 3){ 
     System.out.print("3 heads in a row after " +totalFlips + " flips"); 
    } 
} 
+0

В чем проблема? – Mureinik

+2

Переместить 'randomNumber = number.nextInt (2) + 1;' внутри цикла do-while. –

+0

Вы генерируете случайное число (иногда '1', иногда' 2'), и начиная с строки 'do' у вас есть это значение ... –

ответ

3

Вы устанавливаете случайное число вне цикла, чтобы выбрать 1 или 2, и оно не изменится. Я предлагаю вам переместить генерацию случайных чисел внутри вашего цикла, чтобы каждый раз генерировать новый номер.

Причина, по которой, по-видимому, только голова - это то, что если она выбирает хвосты, она войдет в бесконечный цикл.

BTW Использование отладчика нашло бы эту ошибку быстрее.

+0

Мне нужно, чтобы он печатал« 3 главы подряд », если он один после другие, а не всего 3 головы. Как мне это сделать? –

+0

@MarinaClaire check 'if (heads == totalFlips)' тогда это были все головы. –

+0

Но что, если это пошло на головы головных головок, тогда 3 количества головок не равны общему количеству флипов, равному 4. –