当我 运行 我的 jframe 时,它总是显示 "java.lang.NumberFormatException: empty String"
When i run my jframe, it always shows "java.lang.NumberFormatException: empty String"
当用户填写薪水和加班文本字段时,本应填写总工资文本字段,但一旦程序启动,它总是显示 java.lang.NumberFormatException:空字符串错误
这是使用
的代码
private void jTextGrossPayMouseEntered(java.awt.event.MouseEvent evt) {
try{
DecimalFormat numberFormat = new DecimalFormat("#.00");
double salary = Double.parseDouble(jTextBasicSalary.getText());
double hours = Double.parseDouble(jTextHours.getText());
double overtime = Double.parseDouble(jTextOvertime.getText());
double overtimepay = Double.parseDouble(jTextOvertimePay.getText());
double total1;
double total2;
double total3;
total1 = salary * hours;
total2 = overtime * overtimepay;
total3 = total1 + total2;
String gross = String.valueOf(total3);
jTextGrossPay.setText(gross);
}
catch(Exception e){
e.printStackTrace();
}
}
在我 运行 程序之后这些是错误
java.lang.NumberFormatException: empty String
这里:
private void jTextGrossPayMouseEntered(
表示当鼠标进入屏幕上的某个组件时执行此代码。
你要明白:鼠标在某处移动与"the user has entered all required information in all text fields"不同。
然后:
double salary = Double.parseDouble(jTextBasicSalary.getText());
您 could/should 做什么:检查 文本字段的内容,然后再对其内容进行任何操作!
含义:在考虑解析之前,您应该检查文本字段是否包含 non-empty 字符串。如果是这样,您就可以在 try/catch 块中进行解析。如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入什么。您应该分别为所有文本字段执行此操作。
正如最初所说:问问自己 什么时候 checking/parsing 应该发生。当鼠标进入"something"时真的应该发生吗?或者它更像是:点击某个按钮时应该发生这种情况?
所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。对按钮点击或菜单项选择等操作做出反应!
您可以实现类似于检查输入是否为有效 Double 的辅助方法的方法:
private boolean checkValidInput(String input) {
try {
Double.parseDouble(input);
return true;
} catch (Exception e){
System.out.println("input :" + input +" is not a valid double");
return false;
}
}
可能会有更快的实现,但这个很简单并且有效...
当用户填写薪水和加班文本字段时,本应填写总工资文本字段,但一旦程序启动,它总是显示 java.lang.NumberFormatException:空字符串错误
这是使用
的代码 private void jTextGrossPayMouseEntered(java.awt.event.MouseEvent evt) {
try{
DecimalFormat numberFormat = new DecimalFormat("#.00");
double salary = Double.parseDouble(jTextBasicSalary.getText());
double hours = Double.parseDouble(jTextHours.getText());
double overtime = Double.parseDouble(jTextOvertime.getText());
double overtimepay = Double.parseDouble(jTextOvertimePay.getText());
double total1;
double total2;
double total3;
total1 = salary * hours;
total2 = overtime * overtimepay;
total3 = total1 + total2;
String gross = String.valueOf(total3);
jTextGrossPay.setText(gross);
}
catch(Exception e){
e.printStackTrace();
}
}
在我 运行 程序之后这些是错误
java.lang.NumberFormatException: empty String
这里:
private void jTextGrossPayMouseEntered(
表示当鼠标进入屏幕上的某个组件时执行此代码。
你要明白:鼠标在某处移动与"the user has entered all required information in all text fields"不同。
然后:
double salary = Double.parseDouble(jTextBasicSalary.getText());
您 could/should 做什么:检查 文本字段的内容,然后再对其内容进行任何操作!
含义:在考虑解析之前,您应该检查文本字段是否包含 non-empty 字符串。如果是这样,您就可以在 try/catch 块中进行解析。如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入什么。您应该分别为所有文本字段执行此操作。
正如最初所说:问问自己 什么时候 checking/parsing 应该发生。当鼠标进入"something"时真的应该发生吗?或者它更像是:点击某个按钮时应该发生这种情况?
所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。对按钮点击或菜单项选择等操作做出反应!
您可以实现类似于检查输入是否为有效 Double 的辅助方法的方法:
private boolean checkValidInput(String input) {
try {
Double.parseDouble(input);
return true;
} catch (Exception e){
System.out.println("input :" + input +" is not a valid double");
return false;
}
}
可能会有更快的实现,但这个很简单并且有效...