2016-03-26 131 views
-1

我有我的try/catch語句的問題。我知道這可能是一個簡單的解決方案,但我是新來的Java。 在這裏,我想要控制檯提示用戶添加他們的初始存款,例如,如果我輸入像「你好」的程序會崩潰,而不是再次詢問?感謝嘗試和趕不工作

這裏是我收到的錯誤: 異常線程 「main」 java.util.InputMismatchException 在

java.util.Scanner.throwFor(來源不明)

在java中。 util.Scanner.next(未知來源)

在java.util.Scanner.nextInt(未知來源)

在java.util.Scanner.nextInt(未知來源)

System.out.println("Please enter an initial deposit:"); 
      try{ 

       deposit.add(keyboard.nextInt()); 

      }catch(NumberFormatException e){ 

       System.out.println("Invalid input"); 

      System.out.println("Please enter an account number:"); 
      accountNumber.add(keyboard.nextDouble()); 
+3

缺少一個右括號的? catch(NumberFormatException e){System.out.println(「Invalid input」);} /*...*/ System.out.println(「請輸入帳號:」); ' –

+0

您是否收到任何錯誤?如果是,他們是什麼? –

+0

你有沒有檢查你得到了什麼異常?例如,如果你在線程「main」java.util.InputMismatchException中得到異常,那麼你不能捕獲使用NumberFormatException? – Suparna

回答

2
根據 docs

方法nextInt

拋出InputMismatchException時沒有NumberFormatException的

寫:

catch(InputMismatchException e){ 
     .... 

更新: 我用這個片段,並輸入查詢作品數量

public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Please enter an initial deposit:"); 

    try { 
     int numberEntered = keyboard.nextInt(); 
     System.out.println(numberEntered); 

    } catch (InputMismatchException e) { 

     System.out.println("Invalid input"); 

     System.out.println("Please enter an account number:"); 
    } finally { 
     keyboard.close(); 
    } 
} 

控制檯:

Please enter an initial deposit: 
55 
55 

Process finished with exit code 0 
+0

這可以稍微改善一點。它實際上顯示「無效輸入」 然而,繼續「請輸入一個帳號」,然後崩潰與'線程異常' –

+0

我擴展了答案,希望它可以幫助你調試你的代碼 – tjago

1
  1. 你沒有得到你捕捉到的異常。相反,你得到InputMismatchException。

  2. 由於您試圖在catch語句中再次輸入輸入,您必須再次輸入無效輸入。但是,誰抓住了這個例外?沒有人。因此,你的程序將退出。另外,我沒有看到任何超出該行的代碼。因此,它也可能是一個正常退出。

0

第一個括號缺失。我想在println之後(「Invalid Input」);

如果仍然沒有工作試圖抓住各種錯誤 catch(Exeption e){...}