private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Double NumEmpilhador;
Double TamanhoFonte;
Double TempoEmpilhador;
Double ResultadoEmpilhador;
NumEmpilhador = Double.parseDouble(NumeroEmp1.getText());
TamanhoFonte = Double.parseDouble(ValorEmpilhador.getText());
TempoEmpilhador = Double.parseDouble(OperaçãoEmp1.getText());
if(NumEmpilhador==0){
EmpilhadorFinal1.setText("0");
}
else{
ResultadoEmpilhador=(NumEmpilhador*TamanhoFonte*TempoEmpilhador)/24;
EmpilhadorFinal1.setText(ResultadoEmpilhador + "W");
}
}
我想当textfield的值是" 0"将数字放在" 0"在jlabel中,如果值不是" 0"做数学运算。 但是,在数学运算的一部分(当值不同于" 0")运行良好,但是当它等于" 0"该程序给我们一个错误。 我该如何解决这个问题?如果它可以用一个实际的例子表示感谢,我还处于java的初始阶段。
这是我得到的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at tese4.Camara1a3.jButton2ActionPerformed(Camara1a3.java:6499)
我试过这个:if (NumeroEmp1.getText().equals(0))
并且这个:if (NumeroEmp1.getText().equals("0"))
。它仍然无效。
谢谢!
答案 0 :(得分:0)
如果您已调试过代码,则会发现错误出现在
行 TamanhoFonte = Double.parseDouble(ValorEmpilhador.getText());
这一行和下一行尝试获取文本并将其转换为double值,但这些字段为空。所以,你得到一个NumberFormatException
如果您对该TextFields中键入的内容不感兴趣,我建议您删除这些行。
答案 1 :(得分:0)
我认为这应该有效:
if (NumeroEmp1.getText().isEmpty()) {
// user did not enter a number
} else {
// we’ve got a number, proces it
}
消息empty String
告诉您,您尝试解析的字符串为空(换句话说,它是""
)。
您可能还想了解用户输入内容的情况,但这不是有效的双号。您可以使用try
- catch
块。