double B=Double.parseDouble(emp_txt2.getText());
double C=Double.parseDouble(nopay_txt3.getText());
double E=Double.parseDouble(wop_txt4.getText());
double F=Double.parseDouble(wop_txt5.getText());
double f =B+C+E+F;
String p = String.format("%.2f",f);
lb1_total3.setText(p);
Я хочу присвоить двойные значения B, C, E, F нулю, когда поле jtextfield пусто.
Вы можете использовать этот метод вместо Double.parseDouble.
public static double tryParsDouble(String s, double defaultValue) {
if (s == null) return defaultValue;
try {
return Double.parseDouble(s);
} catch (NumberFormatException x) {
return defaultValue;
}
}
А затем:
double F = tryParsDouble(wop_txt5.getText(), 0.0);
Попробуйте ввести значения в текстовое поле emp_text2
, и код вернет следующие значения соответственно:
""
, " "
, "1"
, "1.1"
, "-1.1"
, "1.0 "
возвращает 0.0
, 0.0
, 1.0
, 1.1
, -1.1
, 1.0
.
Что произойдет, если на входе будет "1.1x"
? Это выбрасывает NumberFormatException
- и приложение должно понять, что делать.
double value = getDoubleValue(emp_text2.getText());
...
private static double getDoubleValue(String input) {
double result = 0d;
if ((input == null) || input.trim().isEmpty()) {
return result;
}
try {
result = Double.parseDouble(input);
}
catch (NumberFormatException ex) {
// return result -or-
// rethrow the exception -or-
// whatever the application logic says
}
return result;
}
Используйте Тернарный оператор, например:
double B = Double.parseDouble((emp_txt2.getText().equals("") ? "0" : emp_txt2.getText()));
.