【发布时间】:2022-01-09 18:32:09
【问题描述】:
当用户尝试在我的计算器中将某个数字除以 0 时,我希望编译器中没有错误,但我不知道如何实现这一点。当用户这样做时,计算器的结果应该是 0,但我希望 Java 编译器没有错误。
protected void handleOnAnyButtonClicked(ActionEvent evt) {
Button button = (Button)evt.getSource();
final String buttonText = button.getText();
if (buttonText.equals("C") || buttonText.equals("AC")) {
if (buttonText.equals("AC")) {
left = BigDecimal.ZERO;
}
selectedOperator = "";
numberInputting = false;
display.setText("0");;
return;
}
if (buttonText.matches("[0-9\\.]")) {
if (!numberInputting) {
numberInputting = true;
display.clear();
}
display.appendText(buttonText);
return;
}
if (buttonText.matches("[+-×÷]")) {
left = new BigDecimal(display.getText());
selectedOperator = buttonText;
numberInputting = false;
return;
}
if (buttonText.equals("=")) {
final BigDecimal right = numberInputting ? new BigDecimal(display.getText()) : left;
left = calculate(selectedOperator, left, right);
display.setText(left.toString());
numberInputting = false;
return;
}
}
static BigDecimal calculate(String operator, BigDecimal left, BigDecimal right) {
switch (operator) {
case "+":
return left.add(right);
case "-":
return left.subtract(right);
case "×":
return left.multiply(right);
case "÷":
// if user divides by 0
try {
left.divide(right);
} catch(ArithmeticException e) {
e.printStackTrace();
return display.setText("0");
}
return left.divide(right);
default:
}
return right;
}
public static void main(String[] args) {
launch(args);
}
谁能帮我在我的代码中修复什么?我是一名 Java 初学者,如果能提供任何建议或帮助,我将不胜感激。
【问题讨论】:
-
除以 0 时不会出现异常,所以在尝试除以之前检查
right是否为 0。如果是display.setText("0")
标签: java javafx bigdecimal