2014-07-03 53 views
0

所以我自己的有效日期只有從1520年到3999和即時新的本網站和即時新的java 請幫助 我想知道我做了什麼此代碼中出現錯誤或做什麼。如何請求用戶輸入每次無效輸入

int x; 
    Scanner in = new Scanner (System.in); 
    do 
    { 
     System.out.print ("Enter a date "); 
     x = in.nextInt(); 
    } 
    while (x<1520&&x>3999); 
    { 
     System.out.println ("Invalid Gregorian Calendar date."); 
     System.out.print ("Please Input a valid Gregorian Calendar date: "); 
    } 
}} 

回答

0

在while循環中,只要輸入無效,就得到另一個整數。此外,您需要在您的while條件中將&&更改爲||,因爲沒有數字既不少於1520也不超過3999.您也不需要do部分,並且需要在while循環後刪除分號 - 它是阻止循環爲您做任何有效的工作。

int x; 
Scanner in = new Scanner (System.in); 
System.out.print ("Enter a date "); 
x = in.nextInt(); 

while (x<1520 || x>3999) // change this to "or", i.e. && --> || 
    { 
     System.out.println ("Invalid Gregorian Calendar date."); 
     System.out.print ("Please Input a valid Gregorian Calendar date: "); 
     x = in.nextInt(); // get another number before checking conditions again 
    } 
0

您需要在while循環中詢問用戶,直到他輸入正確的日期。

int x; 
    Scanner in = new Scanner (System.in); 
System.out.print ("Enter a date "); 
     x = in.nextInt(); 
    while (x<1520||x>3999) 
    { 
     System.out.println ("Invalid Gregorian Calendar date."); 
     System.out.print ("Please Input a valid Gregorian Calendar date: "); 
x = in.nextInt(); 
    } 
}} 
+1

你忘了在'while'條件之後移除';'。 – ajp15243

0

&&運算符是邏輯AND

輸入值不能大於1520小於和大於3999 我想你想檢查是否x小於1520或大於3999

爲了實現這一點,你應該使用適當的邏輯運算符,在這種情況下,它是OR

x<1520 || x>3999

0

你可以改變你的代碼如下所示(請注意,我改變了& &到||,因爲沒有數字,都比3999並小於1520時)

int x; 

    Scanner in = new Scanner (System.in); 
    System.out.print("Enter a date "); 
    x = in.nextInt(); 


    while (x < 1520 || x > 3999) 
    { 
     System.out.println ("Invalid Gregorian Calendar date."); 
     System.out.print ("Please Input a valid Gregorian Calendar date: "); 
     x = in.nextInt(); 
    } 
} 
+0

你忘了在'while'條件後刪除';'。 – ajp15243

+0

@ ajp15243謝謝,編輯。 –

相關問題