运行时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,这将解决您的问题。