2012-09-26 77 views
1

首先,我想說,這是一個家庭作業,我只是在尋找建議。沒有答案!我非常有決心去學習和擅長編程,這不是來自別人做你的工作。指出我正確的方向,將不勝感激!如何限制用戶只輸入一個整數?

請知道我在網上搜索了一個解決方案,但沒有找到符合我需求的解決方案。我無法使用任何高級方法。

該程序允許用戶輸入範圍的開始和結束編號。起始號碼必須可以被十整除,最後必須可以被十整除,並且不能與起始號碼相同。用戶僅限使用0 - 1000之間的數字,不允許在鍵盤上輸入任何其他字符。因此,如果他們點擊「a」或「1200」,程序應該循環回來,直到輸入了有效的條目。

目前我堅持只允許輸入一個整數。我的代碼的特定部分張貼如下:

while(errorLoop != true){ 
     System.out.println("Enter the Starting Number of the Range (ex. 10,70,100)"); 
     startNum = kb.nextInt(); 
     System.out.println("Enter the Ending Number of the Range (ex. 10,70,100)"); 
     endNum = kb.nextInt(); 
     if(startNum % 10 == 0 && endNum % 10 == 0){ 
      errorLoop = true; 
     }else{ 
      errorLoop = false; 
      System.out.println("Start and End of range must be divisible by 10\n"); 
      System.out.println("Please try again (ex. 10,70,100)\n"); 
     } 
    } 

我只發佈了與該問題有關的代碼部分。如果您必須知道程序的要點,則數字範圍將按素數排序,並輸出爲表格查看格式,其中每行以可被10整除的數字結束。非素數將打印爲「 - 」。

Ex。 71 - 73 - - - - - 79 | 80 \ n,然後繼續大範圍。

+0

提示:當有人輸入非整數時會發生什麼?你如何處理髮生的事情? –

+0

爲了將來的參考,作業問題應該標記爲「作業」標籤。我冒昧爲您添加它。 –

+4

@JesseWebb家庭作業標籤剛剛被棄用,所以添加它並不是最好的主意。見[這裏](http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated?cb=1) – Robin

回答

3

我建議您使用nextLine()而不是nextInt()。然後你可以首先確定它可以作爲一個Integer來解析(檢查Integer JavaDoc page),然後確認這個數字符合你的要求。

編輯
爲了處理該輸入是不是數字的情況下,你可以去在幾個方向。我更喜歡使用正則表達式在實際解析調用之前檢查輸入。一個僅包含數字的String將匹配"^\\d+$"(檢查出this link是一個很好的正則表達式教程),並且在String API中有一個方便的方法。

+0

感謝您的建議!我會發布代碼,但我似乎無法使其在註釋部分中工作= /。無論如何,我爲num1 = kb.nextLine()添加了另一個變量。並更改了startNum = Integer.parseInt(num1)。該程序仍然有效,但如果我在輸入整數時輸入「a」,它仍然會出現。 – billabrian6

+0

對不起所有的不必要的編輯,按Enter鍵的壞習慣。我不經常使用這個網站。我正在盡我所能學會使用它。 – billabrian6

+0

@ billabrian6:增加了一些更多信息。 – Keppil

0

你總是可以用正則表達式解析您的意見,以確保他們的數字:

int number = Integer.parseInt(kb.nextLine().replaceAll(」[^\\d]「, 「」)); 

輸入:

1blahblah2moretext3 

可生產數:

123 
0

編寫方法檢查輸入的數字是否是數字。

​​
0

嘗試在你的程序中使用下面的異常,請確保您使用InputMismatchException時和導入。

try { 
     System.out.println("Enter the value of a"); 

     int a = scanner.nextInt(); 


     System.out.println("Enter the value of b"); 
     int b = scanner.nextInt(); 
     int c = a+b; 
     System.out.println("The answer is " +c); 
     } 


    catch (InputMismatchException exception) 
    //Add import java.util.InputMismatchException; at the top 
     { 
     System.out.println("Error - Enter a integer"); 
     }