c# - Why is my "Divide by Zero" prevention not working? -


i've been working on calculator using c# , came across issue haven't been able work past.

currently when user enters number divided 0 answer defaults 0.00 when instead should invalid.

i have no idea why , after tinkering awhile haven't been able figure out. here relevant code:

private void button1_click(object sender, eventargs e) {                 double number1, number2, ans; // identify variables double account decimals.                 number1 = convert.todouble(num1.text); // convert contents of textbox double.                 number2 = convert.todouble(num2.text); //                  ans = 0.0;                 string symbol = modifier1.text;                  if (symbol == "/" && number2 == 0) // part seems broken.                     answer.text = "invalid input.";                 else                     if (symbol == "+")                         ans = number1 + number2;                     else if (symbol == "-")                         ans = number1 - number2;                     else if (symbol == "/")                         ans = number1 / number2;                     else if (symbol == "*")                         ans = number1 * number2;                     else                         ans = 0;                      answer.text = ans.tostring("n"); // change label value number. } 

does have ideas on how can fix this? seems pretty straight forward i'm missing something.

change :

if (symbol == "/" && number2 == 0) // part seems broken.                 answer.text = "invalid input."; 

to :

if (symbol == "/" && number2 == 0) { answer.text = "invalid input."; return; } 

explanation: condition in 'if' clause in code correct. , expected - changes answer.text property "invalid input" bit later changed again on line :

answer.text = ans.tostring("n"); // change label value number. 

and because condition in 'if' clause returned true - 'else' block not executed. that's why see 0.00 (default value of type double).

p.s. adding return statement if clause end method. if compiler *"hey if guy trying divide zero alert him 'ivalid input' , nothing, return method".*

other way sort out :

if (divide 0 attempt) { code here } else {     , place rest of method code here } 

but not recommend because uses redundant else statement , {} figures. can avoid of using if() {....; return; } in case.

you may benefit using switch block , code might refactored :

double number1, number2, ans; // identify variables double account decimals. number1 = convert.todouble(num1.text); // convert contents of textbox double. number2 = convert.todouble(num2.text); //  ans = 0.0; string symbol = modifier1.text;  if (symbol == "/" && number2 == 0) { answer.text = "invalid input."; return;} switch(symbol) {    case "+": ans = number1 + number2; break;    case "-": ans = number1 - number2; break;    case "*": ans = number1 * number2; break;    case "/": ans = number1 / number2; break;    default : answer.text = "invalid sign."; return; }                  answer.text = ans.tostring("n"); // change label value number. 

Comments