2014-10-19 50 views
0

在我的CS類中,如果用戶輸入一個負數,我們必須編寫一個拋出異常的程序;該程序應該提示用戶只輸入正數,然後讓他們重新輸入數字。但是每次我拋出一個異常,我的程序就會被暫停。如何使用異常?

我在做什麼錯,或者如果拋出異常,是否沒有辦法繼續程序?當拋出異常時程序是否自動掛起?

try{ 
    do 
    { 
     N = kb.nextDouble(); 
     if(N<0) 
     { 
      throw new NegativeArraySizeException(); 
     } 
     else 
      j++; 
    } 
    while(j==0); 
    fill.size(N); 
} 
catch(NegativeArraySizeException e) 
{ 
    System.out.println("The number you entered must be positive. Please try again."); 
} 
+0

您是否已經Google'd *任何* *? – Qix 2014-10-19 19:16:22

+0

我不鼓勵將異常用作程序流程,因爲您試圖驗證來自用戶的輸入;這可以通過幾個if語句來實現更簡單(並且更便宜)。 – Makoto 2014-10-19 19:18:10

+0

是的,我做了很多Google,但只是在教程介紹了投擲和投擲以及我認爲的真相陳述時才變得更加困惑。我的程序會拋出一個異常,但它會在拋出後暫停,我需要的只是程序允許用戶重新輸入信息,如果輸入另一個負數,可能會拋出另一個異常。 – Jwags 2014-10-20 20:53:54

回答

1

do-while應包裹try-catch聲明:

do { 
    try { 
     //try to read number 
    } catch (YourCustomException e) { 
     //print message to user 
    } 
} while (<condition>) 
0

解決: 謝謝Luiggi, 我想通了。

j=0; 
do 
{ 
    value=kb.nextDouble(); 
    try 
    { 
     if(value<0) 
      throw new NegativeArraySizeException(); 
     else 
      j++; 
    }catch(NegativeArraySizeException e) 
    { 
     System.out.println("The number you entered must be positive. Please try again."); 
    } 
}while(j==0); 
fill.add(value);