skip to Main Content

I know my error is a common one, but I do have an if condition to catch this error. I’m working with android studio. The language I’m using is kotlin.

I want to calculate this formula: A = ((2varX)+varF) / (varX-(2varF)).

There are two main problems, one is that X and F are 0, I have an if statement for this. The second issue would be if F is half of X, this would give me 0 in my denominator.

Since I’m working with android studio I have two input boxes where the user inputs the variables. I have already validated that the user inputs only numbers and that the camps are not left empty. I have no issue here. My problem is when I input 2 and 1. This would cause my denominator to be 0.
When this happens, I get an error and my app shuts down.

var auxiliar = varF/2
if (varX != 0 && varF != 0 && auxiliar != varX) {
    var resultado = ((2*varX)+varF) / (varX-(2*varF))
    resultadoFormula.setText("a = ${resultado}")
} else {
    message("Combinacion Incorrecta")
}

This is my code. I would appreciate the help.

I get this error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.eval_2_data, PID: 8657
java.lang.ArithmeticException: divide by zero

2

Answers


  1. You need to make sure varX != 2*varF, because if it does the denominator is 0. ((2*varX)+varF) / (varX-(2*varF)) will have 2-2*1 in the denominator, which is 0 because of pemdas. Whenever there is division by 0, this will cause an exception to get thrown.

    Login or Signup to reply.
  2. A try catch block will stop the fatal error and allow the app to continue running.

    var auxiliar = varF/2
    
    try {
         if (varX != 0 && varF != 0 && auxiliar != varX) {
         var resultado = ((2*varX)+varF) / (varX-(2*varF))
         resultadoFormula.setText("a = ${resultado}")
    } else {
         message("Combinacion Incorrecta")
         }
    } catch (ArithmeticException e) {
         System.out.println("I didn't do my math correctly.")
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search