2014-09-09 3 views
2

Я работаю над программой, которая, как предполагается, выбирает случайные числа (с половиной назначается как мальчики, а остальные - девочки) и должна останавливаться, когда был выбран хотя бы один мальчик и одна девушка, затем распечатайте всех детей. Это выглядит немного как это:Симулятор рождения

public class BoyAndGirl { 
    public static void main(String [] args) { 
     int boy = 0; 
     int girl = 0; 
     int total = boy + girl; 

     while (boy <= 1) && (girl <= 1){ 
      if (Math.random() < 0.5); 
      boy = boy + 1; 
      if (Math.random() >= 0.5); 
      girl = girl + 1; 
     } 
     System.out.println("Congratulations! You have a total of " + total + " babies!"); 
    } 
} 

Я знаю, что я должен пропускать код, чтобы фактически начать случайную последовательность, но я не знаю, как начать его. Или, с другой стороны, следует ли использовать логическое выражение?

+1

Вам нужно удалить точку с запятой из 'if (Math.random() <0.5);' и две строки ниже этого. – ajb

+9

'while (boy <= 1) && (girl <= 1) {' делает это даже скомпилировать? – kajacx

ответ

8

Глядя на код можно увидеть следующие вопросы:

1) Следующие вычисляет сумму с помощью тогда текущие значения boy и girl (оба из которых равны нулю). Затем сумма не обновляется.

int total = boy + girl; 

2) Условие while неправильно логически и отсутствует круглые скобки вокруг него. Я дам вам понять, как исправить это состояние.

3) Чтобы сделать один выбор между двумя взаимоисключающими исходами (мальчик/девочка), вызовите Math.random() только один раз, а не дважды. В противном случае вы не гарантируете, что результат является взаимоисключающим (т. Е. Вы можете получить мальчика и девочку на одной и той же итерации, или ни мальчик, ни девочка).

4) В конце операторов if имеются посторонние точки с запятой. Это тонкий: код синтаксически корректен, но не делает того, что вы ожидаете (оба приращения выполняются независимо от того, что возвращает Math.random()).

Их легко исправить. В общем, вы почти все.

+0

Большое вам спасибо! Я сделал все, что вы предложили, и теперь, наконец, напечатано количество младенцев. –

+0

@ DarronMartinez: Мое удовольствие. Спасибо, что задали хорошо представленный первый вопрос. – NPE

+3

@ DarronMartinez: Если ответ NPE помог вам решить ваш вопрос, подумайте о том, чтобы отметить его как «правильный» ответ, щелкнув большой галочкой слева от него. –

Смежные вопросы