2014-10-12 75 views
-1
package exercises; 
import java.util.*; 

public class Try_and_catch { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     int x=1; 
     do 
     { 
      System.out.println("Enter first number"); 
      int n1 = input.nextInt(); 
      System.out.println("Enter second number"); 
      int n2 = input.nextInt(); 
      int sum= n1/n2; 
      System.out.println(sum); 
     } while(x==1); 
    } 
} 

上面的代碼只需要輸入整數,我的問題是如何處理錯誤,每當用戶輸入一個字符?如何解決InputMismatchException?

+0

如果你輸入有效的整數,那麼應該沒有輸入不匹配異常。請確保您在由空格分隔的同一行中輸入兩個整數。 – 2014-10-12 03:57:33

+0

你輸入了什麼? – 2014-10-12 03:57:34

+0

上面的代碼需要輸入只有整數,,,我的問題是如何處理錯誤,每當用戶輸入一個字符?.... thak你 – 2014-10-12 03:58:18

回答

0

使用try塊:

boolean again = true; 
int n1; 
while (again) { 
    try { 
    System.out.println("Enter first number"); 
    input.nextInt(); 
    again=false; 
    } 
    catch(InputMismatchException ime) 
    { 
    // do nothing! 
    } 
} 

這裏會發生什麼是相當簡單:如果我們得到一個異常,那麼「又」未設置爲TRUE,我們就回去周圍循環。如果我們在沒有異常的情況下離開try塊,然後再次切換,我們快樂地前進。

+0

謝謝你的答案...它的作品....但是當我運行它,並擊中任何字符「輸入第一個紐約州」不斷顯示....這是我的下一個問題...謝謝你這麼多... – 2014-10-12 04:10:10

+0

啊,對不起,這是掃描儀中的一個奇怪的故障。在catch塊中添加對input.nextLine()的調用。這將吃掉nextInt()留在管道中的換行符。應該有這個想法,我的不好。 – 2014-10-12 04:15:31

+1

如果將此代碼封裝在方法中並使用該代碼獲取每個數字而不是重複代碼,會更好。 – dramzy 2014-10-12 04:18:28