2014-07-03 63 views
-1

所以我在看一些教程,其中一些人使用Java在GUI中添加兩個數字,但我想這樣做,以便如果有人將單詞而不是數字,它會給他們一個錯誤消息說,它期望數字不是一個字。我該如何爲這段代碼添加if then語句?

public static void main(String args[]){ 

    String fn = JOptionPane.showInputDialog("Enter First Number"); 
    String sn = JOptionPane.showInputDialog("Enter First Number"); 

    int num1 = Integer.parseInt(fn); 
    int num2 = Integer.parseInt(sn);  

    int sum = num1 +num2; 

    JOptionPane.showMessageDialog(null, "The answer is" +sum, "Title", JOptionPane.PLAIN_MESSAGE); 
} 
+1

如果無法解析String值,則'Integer.parseInt'將拋出'NumberFormatException'。你可以使用'try-catch'模塊來捕獲這種情況並顯示錯誤信息 – MadProgrammer

回答

0

您可以將其更改爲以下內容:

try{ 
     int num1 = Integer.parseInt(fn); 
     int num2 = Integer.parseInt(sn); 
} 
    catch(Exception e) { 
console.log(There was an exception) 

更多信息,請參閱本文檔 http://docs.oracle.com/javase/tutorial/essential/exceptions/try.html

+0

最好是趕上你知道要處理的實際異常,而不是盲目地捕獲所有異常 – MadProgrammer

+0

@MadProgrammer能否請你解釋一下你這意味着我可以學習嗎?謝謝 –

+2

'Integer.parseInt'拋出'NumberFormatException',這是「預期」的可能性,你應該盡力去處理這個特定的情況,任何其他異常都應該拋出調用鏈(例如'NullPointerException')。你應該只處理你知道/期望的情況 - 恕我直言 – MadProgrammer

0

parseInt的JavaDoc中表示當String不是NumberFormatException拋出一個有效的號碼。您可以簡單地捕捉異常並重試輸入。有很多方法可以實現重試邏輯。

兩種可能的方法是:

  • 在while循環(isValidInput),直至用戶輸入有效的號碼使用一個布爾值。
  • 打破parseInt在您的異常catch塊中發生的標籤。
+1

恕我直言標籤是邪惡的,應該不惜一切代價避免 – MadProgrammer

+0

你能告訴我什麼恕我直言是什麼? –

+0

我同意@MadProgrammer - 我不會選擇去那條路線 –

1

當paseInt使用數字格式異常時,您可以捕獲單詞。不要忘記導入也;

public static void main(String args[]){ 

    String fn = JOptionPane.showInputDialog("Enter First Number"); 
    String sn = JOptionPane.showInputDialog("Enter First Number"); 
    try{ 
    int num1 = Integer.parseInt(fn); 
    int num2 = Integer.parseInt(sn); 
    int sum = num1 +num2; 


    } catch (NumberFormatException err) {  
    JOptionPane.showMessageDialog(null,"words not allow"); 
    } 





} 
+1

你還應該添加,使用異常來控制邏輯流程通常不是一個好主意,只是說;) – MadProgrammer