2017-06-21 66 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