Java按钮中的FX算术表达式

Java FX arithmetic expression in a button

你好,我想做一个带有两个输入字段的按钮,并尝试执行以下操作:

  1. chick if it's a number.(所以它可以区分两个数字)
  2. 我不能用零除任何数字。 并显示它是一个算术表达式。 有什么帮助吗? 代码是吹:: enter image description here

代码::

b4.setOnMouseClicked((MouseEvent ex) -> {
String Num1 = tf4.getText();
String Num2 = tf8.getText();


if(Num1.matches("^\d+(\.\d+)?") && Num2.matches("^\d+(\.\d+)?")) {
    
    
    try {
        
        double Num1f = Double.parseDouble(Num1);
        double Num2f = Double.parseDouble(Num2);
     double     result =(Num2f / Num1f);
     
   valf4.setText(String.valueOf(result));

     
    }
    catch (ArithmeticException e) {
        System.out.println("ArithmeticException");
        valf4.setText("You can't do that !");
    }
} else {
    
}

});

它显示无穷大 不是我在捕获区所做的预期

Java中的浮点运算不会抛出被零除的异常;它的计算结果为 Double class(Double.POSITIVE_INFINITYDouble.NEGATIVE_INFINITY)中的特殊值之一。

除了捕获异常,您可以只测试分母是否为零,或者测试结果是否为无穷大:

b4.setOnMouseClicked((MouseEvent ex) -> {

    String num1 = tf4.getText();
    String num2 = tf8.getText();
    
    
    if(num1.matches("^\d+(\.\d+)?") && num2.matches("^\d+(\.\d+)?")) {
        
        
        double num1f = Double.parseDouble(num1);
        double num2f = Double.parseDouble(num2);
        double result = num2f / num1f;
        
        if (Double.isInfinite(result)) { 
            valf4.setText("You can't do that !");
        } else {
            valf4.setText(String.valueOf(result));
        }
    } else {
        
    }

});