我编写了以下代码来从用户那里获取输入并将其解析为double以进行进一步的计算。问题是这个程序在编译时给了我java.lang.NumberFormatException
这个错误java.lang.Double.parseDouble(Unknown Source)
。我不知道为什么会产生这个错误。所以我的问题是:
以下是代码:
注意:
Multiplicand和Multiplier是JTextField
public void TakeInput()
{
double a,b;
String input1="1",input2="1";
input1=Multiplicand.getText();
input2=Multiplier.getText();
a=Double.parseDouble(input1);// converting string input to double
b=Double.parseDouble(input2);
....
}
当我在eclipse中点击运行或播放按钮时,我得到了这个例外。这就是为什么我无法向这些文本字段提供任何输入
此致
答案 0 :(得分:1)
当我在eclipse中点击运行或播放按钮时,我得到了这个例外。
Multiplicand
和Multiplier
的初始值必须是double
的有效Double.parseDouble
值,而不是NumberFormatException
。
请注意,如果您希望将每个JTextField
中的值设置为1
,则可以执行以下操作:
Multiplicand.setText("1");
Multiplier.setText("1");
此外,NumberFormatException
是运行时或未选中例外。您可以将分配包装在try/catch
块中,以便您可以优雅地处理此异常。
答案 1 :(得分:0)
parseDouble声明已检查的异常NumberFormatException。这意味着你的方法TakeInout需要声明它将如何处理它。您的方法必须声明它可以抛出异常,或者您需要在parseDouble周围放置try / catch块。
您可以详细了解差异here。
答案 2 :(得分:0)
确保input1=Multiplicand.getText();
是一个可以实际解析为Double
的值。如果它可能出错(例如用户输入值),请将该行包装在try/catch
块中:
public void takeInput() {
String input1="1", input2="1";
input1 = Multiplicand.getText();
input2 = Multiplier.getText();
System.out.println("'" + input1 + "', '" + input2 + "'"); //log inputs
double a, b;
try {
a = Double.parseDouble(input1);// converting string input to double
b = Double.parseDouble(input2);
}
catch (NumberFormatException nfe) {
//either
return;
//or something like:
a = 0;
b = 0;
//and continue
}
....
}