运行时java中的数字格式异常

运行时java中的数字格式异常,java,numberformatexception,Java,Numberformatexception,我目前正在开发自己的计算器,当我按下计算器内的加号按钮时,我会得到一个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])

我目前正在开发自己的计算器,当我按下计算器内的加号按钮时,我会得到一个
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);
    }
}
if(e.getSource()==p){
字符串a[]=新字符串[2];
双d[]=新双d[2];

对于(int i=0;i我假设输入为1+2,因此当您单击加号时,存储的第二个数字为空,因此错误您无法在
Double.parseDouble(String String)
内解析
+


如果字符串不包含可解析的双精度字符串,它将抛出
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();
         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);
         }

    }
}
if(e.getSource()==p){
字符串a[]=新字符串[2];
双d[]=新双d[2];

对于(int i=0;我建议您在调试器中调试您的程序,以查看文本区域为空的原因。该程序运行正常,但当我按下加号按钮时,异常删除如果您希望不为空的文本为空,则该程序无法正常工作。好的,现在我明白了,我正在将字符串转换为double,但我正在输入一个整数var当我输入一个双精度变量时,它没有给我错误,但是你能告诉我,我如何检查输入的数字是整数、双精度还是其他的吗kind@devjoshi打印
tf.getText();
的值是什么?您正在设置
tf.setText(null);
用于循环的下一次迭代。问题是,我正在将字符串转换为double。如果用户输入double,则没有问题,但如果用户输入任何整数,则会有例外。您可以将整数转换为double,这将解决您的问题。