當用戶填寫工資和加班文本字段時,假設要填寫總薪資文本字段,但是一旦程序啟動它總是顯示java.lang.NumberFormatException:empty String error這是使用的代碼 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
2 回答

浮云間
TA貢獻1829條經驗 獲得超4個贊
這里:
private void jTextGrossPayMouseEntered(
表示當鼠標進入屏幕上的某個組件時,將執(zhí)行此代碼。
你必須明白:鼠標移動的地方是不是為“用戶輸入的所有文本字段所有需要的信息”一樣。
然后:
double salary = Double.parseDouble(jTextBasicSalary.getText());
您可以/應該做什么:在對內容進行任何操作之前,請檢查文本字段的內容!
含義:在考慮解析之前,您應該檢查文本字段是否包含非空字符串。如果是這樣,那么您可以在try / catch塊中進行解析。如果解析失敗,您可以向用戶顯示一個消息框,告訴他您希望他輸入的內容。您應該分別為所有文本字段執(zhí)行此操作。
最初說的是:問問自己何時應該進行檢查/解析。當鼠標進入“某物”時真的會發(fā)生嗎?或者更像是:當某個按鈕被點擊時會發(fā)生這種情況?
所以:解決方案也可能是編寫新代碼,并將其放入某種動作偵聽器中。這會對按鈕點擊或選擇菜單項等操作做出反應!

白板的微信
TA貢獻1883條經驗 獲得超3個贊
你可以實現(xiàn)類似幫助方法的東西,檢查輸入是否是有效的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; }}
可能會有更快的實現(xiàn),但這個很容易并且有效...
添加回答
舉報
0/150
提交
取消