2015-06-18 44 views
1

我有一個程序來計算閏年,但是,它只能工作在1750年左右,所以我希望我的用戶只能夠輸入號碼過去1750.讓我的程序回到「頂部」(如果語句)(Java)

System.out.println("Enter a year after 1750:"); 
    leapYear = in.nextInt(); 

    if(leapYear<1750){ 
     System.out.println("You have entered a year before 1750, please try again :"); 
     leapYear = in.nextInt(); 
    } 

我的解決方案是把一個if語句。然而,我意識到,只有用戶輸入1750以下的東西一次,這纔會起作用。如果他們再次這樣做,該計劃將繼續。有沒有一種方法可以在沒有重新寫入的情況下執行「我已經進入1750年之前的一年,請再試一次:」多少次?

我在想也許一段時間的聲明可以工作(如果一段時間的聲明工作,我怎麼能做到這一點,而不會造成無限循環)?

回答

5

你在一段時間的聲明正確的軌道上。保持無限執行非常簡單。只要用戶輸入正確的年份,循環條件將評估爲false並退出。

System.out.println("Enter a year after 1750:"); 
leapYear = in.nextInt(); 

while(leapYear < 1750){ 
    System.out.println("You have entered a year before 1750, please try again :"); 
    leapYear = in.nextInt(); 
} 

你也可以嘗試do-while循環以減少重複代碼:

do{ 
    System.out.println("Please enter a year after 1750:"); 
    leapYear = in.nextInt(); 
}while(leapYear < 1750); 

用戶將只是被再次提示一個1750年後進入,這需要需要一個錯誤消息的照顧。而不是

+0

歡呼聲中,我認爲聲明將執行的時間無限量「你以前1750進入了一年」,現在我明白了,如果你進入了一年過去1750它將會退出循環。 –

+0

不客氣@Idan。同時使用「do-while」循環檢查我的編輯。 – CubeJockey

+0

我也有時做類似的事情:leapYear = 1749,然後是while循環,因爲我更喜歡條件是在括號的頂端,而不是底部。 –

2
while(leapYear<1750) 

if(leapYear<1750)