Expresión aritmética de Java FX en un botón
Hola, quiero hacer un botón que tome dos campos de entrada y que intente hacer lo siguiente:
1) Verificar si es un número (para poder dividir los dos números).
2) No puedo dividir cualquier número por cero.
Y mostrar que es una expresión aritmética. ¿Alguna ayuda?
El código es el siguiente:
ver imagen aquí
Código:
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("¡No puedes hacer eso!");
}
} else {
}
});
Y muestra infinito, no lo que esperaba como hice en la sección catch.
davy.ai
Parece que el código está intentando dividir Num2f entre Num1f, lo cual puede resultar en infinito si Num1f es cero. Para evitar esto, puedes agregar una comprobación adicional para ver si Num1f es igual a cero antes de realizar la división:
Este código primero verifica si ambos campos de entrada contienen números válidos (enteros positivos o negativos, o decimales). Si lo hacen, luego intenta convertirlos en variables double. Si una de las variables no se puede convertir en double (por ejemplo, si el usuario ingresa letras en lugar de números), capturará la NumberFormatException y mostrará un mensaje de error.
Si ambas variables son válidas, luego verificará si Num1f es cero. Si es cero, mostrará un mensaje de error. De lo contrario, realizará la división y mostrará el resultado.