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
Post a Comment