2015-09-09 3 views
2

Я работаю над программой для своего класса Java, которая должна рассчитать, сколько детей потребуется для пары, чтобы иметь один из каждого пола, предполагая, что у него 50/50 вероятность того, что ребенок будет мужчиной. Затем программе необходимо отслеживать, сколько раз потребовалось 2 ребенка, чтобы иметь один из каждого пола, сколько раз у него было 3 ребенка, 4 детей и, наконец, 5 или более детей в Т-судах. Я решил это, вставив цикл while в цикл for, который запускает T раз. Моя проблема заключается в том, что хотя цикл for for работает в T раз, мой цикл while выплевывает, скажем, 3 ребенка, а затем не обновляется для остальной части цикла for. Любые советы относительно того, как правильно настроить цикл while? Благодаря!Петли в простой Java-программе

public class B 
{ 
    public static void main(String[] args) 
    { 
     int girls = 0; 
     int boys = 0; 
     System.out.print("Enter variable: "); 
     int T = StdIn.readInt(); 

     for (int i = 0; i < T; i++) 
     { 
      while ((boys < 1) || (girls < 1)) 
      { 
       if (Math.random() < 0.5) 
       { 
        boys = boys + 1; 
       } 
       else 
       { 
        girls = girls + 1; 
       } 
      } 
     } 
    } 
} 
+0

Ваш код выполняет именно то, что вы просили его сделать. Я боюсь, что вы неправильно поняли постановку проблемы. – duffymo

ответ

3

Необходимо выполнить сброс числа мальчиков и девочек в каждом прогоне. Поэтому код вокруг время цикла должно быть:

boys = 0; 
girls = 0; 
while ((boys < 1) || (girls < 1)) 

Но после того, как время цикла, нужно рассчитать, какой размер семьи этот пробег относится к: 2 детей, 3 детей, 4 детей, 5+ детей и прирост соответствующий счетчик.

switch(boys + girls) { 
    case 2: 
     twoKids++; 
    break; 

    case 3: 
     threeKids++; 
    break; 

    case 4: 
     fourKids++; 
    break; 

    default: 
     fivePlusKids++; 
} 
+0

То, что я тоже думал, но запускаю мою программу с &&, а не || не обеспечивает надлежащего вывода. Если я запустил программу за пределами цикла for и добавлю какой-то код, чтобы распечатать, сколько мальчиков и девочек есть, он работает правильно с || и производит такие вещи, как девочки: 0 мальчиков: 2 с &&. Мне просто нужен способ повторить цикл while, чтобы получить, скажем, 10 отдельных форпостов. – glac19

+0

Вы правы - проблема не в предложении while, это потому, что вам нужно сбросить счет мальчиков и девочек. Я отредактировал ответ. – Jason

+0

Что делать, если вы хотите отслеживать семьи с 10+ детьми? Решение для коммутационных шкафов, похоже, не масштабируется для этого. Массив кажется более подходящим. –