2013-10-04 6 views
1

привет, я хочу создать цикл, который будет печатать неправильный ответ каждый раз, когда ответ не 1 2 3 или 4 .... и я хочу, чтобы он работал бесконечно, мой не обнаружил, правильно ли ответ или неправильно он просто распечатывает недействительный ответ, затем снова спрашивает, а затем падает! Мне нужна помощь, потому что я не знаю, почему это так!infinte do while loop

Вот мой код, не читайте «текст», потому что его на французском языке просто смотрите код!

System.out.println("Veuillez Choisir 1 des 4 groupes alimentaires suivants: (1)Légumes et fruits , (2) Produit cérealiers , (3) Laits et Substitues , (4) Viandes et substitues :"); 
     System.out.println("\n"); 
    answer = Clavier.lireIntLn(); 
    do { 
     System.out.println("Votre choix est invalide"); 
     System.out.println("Veuillez Choisir 1 des 4 groupes alimentaires suivants: (1)Légumes et fruits , (2) Produit cérealiers , (3) Laits et Substitues , (4) Viandes et substitues :"); 
      answer = Clavier.lireIntLn(); 
       continue; 
     }while (answer<1 && answer>5); 
+3

Снимите 'continue' –

+0

Я не понимаю, как разработчик может использовать' DO- в то время как 'или' continue' - это что-то ужасное. – nachokk

ответ

3

Сначала вам необходимо удалить continue.

После этого вам нужно будет иметь дело с этим:

while (answer<1 && answer>5) 

Это никогда не произойдет. Вы должны сделать это:

while (answer<1 || answer>5) 

Вы не можете иметь несколько меньше, чем 1 и больше 5.

1

continue заявление вызывает выполнение программы, чтобы перейти обратно в do сразу даже не оценить While-состояние. Это означает, что условие никогда не оценивается, и цикл становится бесконечным.

Удалить продолжение, и цикл будет оставлен, если условие while равно false. К сожалению, это всегда будет ложным, потому что значение не может быть ниже 1 и выше 5. Если вы хотите, чтобы продолжить до входа пользователя 5, а затем попробуйте

while (answer != 5) 

Если вы хотите (как написано) позволяют любой ответ, кроме 1, 2, 3 или 4, это сделать

while(answer >= 1 && answer <= 4); 
0

код будет больше, как это:

do 
{ 
    System.out.println("Veuillez Choisir 1 des 4 groupes alimentaires suivants: (1)Légumes et fruits , (2) Produit cérealiers , (3) Laits et Substitues , (4) Viandes et substitues :"); 
    System.out.println("\n"); 
    answer = Clavier.lireIntLn(); 
    if(answer < 1 || answer > 4 ) 
    { 
     //print your error message here 
    } 
}while(true) 
+1

Где перерыв? –

+1

".. и я хочу, чтобы он бежал бесконечно" – LemonMooseTom

0

продолжени предотвращает его от достижения заявления времени. Удалите его, и он попадет в состояние while.