2017-06-21 78 views
-1

我目前正在開發自己的計算器和我得到的NumberFormatException當我按下里面的加號按鈕: -數字格式異常在運行時

if(e.getSource() == p) { 
    String a[] = new String[2]; 
    double d[] = new double[2]; 
    for(int i =0; i<2; i++) { 
     a[i] = tf.getText(); 
     d[i] = Double.parseDouble(a[i]); 
     System.out.println("First array is "+d[i]); 
     sum = sum + d[i]; 
     tf.setText(null); 
    } 
} 

我沒有得到什麼數字格式異常是我搜索它告訴我,我的字符串是空的,但我現在需要做的。

please click here for errors

+0

我建議你在調試器調試你的程序,看看爲什麼文本區域是空的。 –

+0

該程序運行正常,但當按下加號按鈕時,異常會觸發 –

+0

如果您希望不爲空的文本爲空,則程序無法正常工作。 –

回答

0

我假設你正在進入輸入爲1 + 2,所以當你點擊加號,你所存儲的第二個數字是零,因此誤差

1

無法解析+裏面的Double.parseDouble(String string)

如果字符串不包含一個可解析的雙倍,它會拋出NumberFormatException

+0

好了現在我明白了我把我的字符串轉換成了雙精度型,但是當我輸入一個雙精度變量時輸入了一個整型變量它沒有給出錯誤 –

+0

但是你能告訴我怎樣才能檢查輸入的數字是一個整數或者一個double或者任何其他種類 –

+0

@devjoshi'tf.getText()的打印值;'它是什麼? – Aryan

0

這將解決您的問題

if(e.getSource() == p) { 
    String a[] = new String[2]; 
    double d[] = new double[2]; 
    for(int i =0; i<2; i++) { 
     a[i] = tf.getText(); 
     if(a[i].contains("[a-zA-Z]+") == false){ 
      d[i] = Double.parseDouble(a[i]); 
      System.out.println("First array is "+d[i]); 
      sum = sum + d[i]; 
      tf.setText(null); 
     } 

    } 
} 
+0

事情是我將字符串轉換爲雙倍,如果用戶輸入雙倍然後沒有問題,但如果用戶輸入任何整數然後會有異常 –

+0

您可以將整數轉換爲雙倍,它將解決您的問題。 – Akash