2016-10-08 77 views
1

所以,我提示用戶輸入變量。如果變量小於0且大於10.如果用戶輸入< 0和> 10,我想要求用戶再次輸入號碼。我在提問時輸入4,表示你輸入錯誤。但在第二次嘗試中,它運作良好。例如:如果我輸入25,它會打印「您輸入錯誤」的消息。爲什麼我會收到此消息,即使我的輸入在第一次嘗試時適合條件?獲取做 - 錯誤

import java.util.*; 
import java.io.*; 


public class abc{ 
public static void main(String args[]) throws Exception{ 


    int velocity; 
    int time; 

    System.out.print("Enter the velocity"); 

    Scanner sn = new Scanner(System.in); 

    velocity = sn.nextInt(); 


    System.out.println("Enter the time"); 

    time=sn.nextInt(); 


    do{ 

     System.out.println("you entered wrong format/d Please Try Again"); 

     time=sn.nextInt(); 

    }while(time<0 || time>10); 

} 
} 
+1

做,田地總是執行一次不管是什麼。 – Li357

+1

我需要使用它。你有什麼建議嗎? –

+0

你爲什麼需要*一段時間?在這種情況下這不是最佳的。使用一段時間。 – Li357

回答

1

請考慮以下實現(請參閱註釋)。

do-while循環

// Assuming the time value is not valid. 
boolean isValidTime = false; 

do { 
    System.out.println("Enter the time: "); 
    time = sn.nextInt(); 

    if (time < 0 || time > 10) { 
     System.out.println("You have entered invalid time value!"); 
    } else { 
     // The time value is valid now! 
     isValidTime = true; 
    } 
// While the time value is not valid… 
} while (!isValidTime); 

而-do循環

// Assuming the time value is not valid. 
boolean isValidTime = false; 

// While the time value is not valid… 
while (!isValidTime) { 
    System.out.println("Enter the time: "); 
    time = sn.nextInt(); 

    if (time < 0 || time > 10) { 
     System.out.println("You have entered invalid time value!"); 
    } else { 
     // The time value is valid now! 
     isValidTime = true; 
    } 
} 
+1

作者在評論中說,他必須使用do-while循環。 「我需要使用它,你有什麼建議嗎?」 – dshus

+0

@dshus,非常感謝你的提示!更新了答案。 –

1

do while循環將始終執行do {}塊。在你的情況下,當你輸入第一個數字時,它首先執行do {},然後輸出消息。第二次,在{}塊中,它實際上會檢查,因此您會得到預期的消息。

+0

如果你確實需要做「做while」循環,那麼你可以簡單地創建一個標誌並初始化counter = 0;在做system.out.println之前,檢查flag是否不是0,如果是,那麼只打印語句。你將不得不像這樣增加計數器。標誌= 0; (flag!= 0)System.out.println(「你輸入錯誤的格式/ d請再試一次」); } flag = 1; time = sn.nextInt(); } while(time <0 || time> 10); – HaroldSer

+0

我打算初始化標誌= 0而不是計數器= 0。也可以說「這樣增加旗幟」不是櫃檯。 – HaroldSer

1
do{ 
    System.out.println("Enter the time"); 
    time=sn.nextInt(); 
    if (time < 0 || time > 10) 
     System.out.println("you entered wrong format/d Please Try Again"); 


}while(time<0 || time>10); 

這將打印「輸入時間」,等待輸入,如果輸入錯誤,循環打印格式錯誤消息,並顯示一條消息,詢問的時間再次。

這是因爲do-while總是執行語句至少一次。所以你要做的是獲得一個整數,檢查它是否有效,如果它是無效的,它將循環,因此打印一個「錯誤的格式」信息。否則,它將繼續打印「錯誤格式」信息。

如果您只想打印一次「輸入時間」,只需在執行之前移動該語句即可。