2013-10-04 197 views
1

嗨我想做一個循環,將打印錯誤的答案,每次答案是不是1 2 3或4 .... ,我希望它無限運行,我不檢測答案是否正確或錯誤它只是打印出無效的答案,然後再問,然後崩潰!我需要一些幫助,因爲我不知道它爲什麼這樣做!infinte做while循環

這是我的代碼不讀「文本」部分,因爲它在法國只是看代碼!

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

我不明白一個開發人員如何使用'做 - 而'或'繼續'是可怕的。 – nachokk

回答

3

首先你需要刪除continue

之後你這樣做,你將需要處理這個:

while (answer<1 && answer>5) 

這永遠不會發生。你需要這樣做:

while (answer<1 || answer>5) 

你不能有一個數小於1且大於5

1

continue語句導致程序執行跳轉回do馬上甚至沒有評估,而條件。這意味着條件永遠不會被評估,並且循環變得無限。

刪除continue,當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語句。刪除它,它會擊中的條件。