2013-10-04 4 views
1

안녕하세요, 대답이 1 2 3 3 또는 4가 아닌 대답을 인쇄하지 않으려 고합니다. 대답을 올바르게 실행하면 무한히 돌아가고 싶습니다. 또는 잘못된 대답을 인쇄 한 다음 다시 묻고 충돌합니다! 내가 왜 그 일을하는지 모르기 때문에 나는 도움이 필요하다!infinte while 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

이 될 수있을 수없는' –

+0

내가 개발자가'할 - 사용하는 방법을 이해 해달라고 CONTINUE ' while 또는 continue는 무언가이다. – nachokk

답변

3

먼저 continue을 제거해야합니다.

당신이 그렇게 한 후에는이 처리해야합니다 : 이것은 결코 일어나지 않을 것입니다

while (answer<1 && answer>5) 

. 당신은이 작업을 수행해야합니다

while (answer<1 || answer>5) 

제거 미만과 5보다 큰

1

continue 문은 프로그램 실행이 즉시 심지어 동안 조건을 평가하지 않고 다시 do로 이동됩니다. 이는 조건이 평가되지 않고 루프가 무한대가된다는 것을 의미합니다.

continue를 제거하면 while-condition이 거짓 일 때 루프가 유지됩니다. 당신이 (서면으로) 당신이 원하는 때, 수

while (answer != 5) 

을 시도 사용자 입력 5까지 계속하려는 경우 값이 5 위 1 이하 수 없기 때문에 불행히도 그것은 항상 거짓이 될 것입니다 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 문에 도달하지 못하게 계속합니다. 그것을 제거하면 잠시 동안 충돌합니다.