+ 4
Calculator help
I'm stuck x.x not really sure how to get this to work. I'm sure it's syntax error but I'm still pretty new to programming. Suggestions? https://code.sololearn.com/cT63oEGdjke0/?ref=app
7 Réponses
+ 11
Let's see, your program going to perform computation on 3 inputs:
✅ value of x
✅ value of y
✅ operator
The code missed out the 3rd input, which is the operator going to use and the value used for comparison in switch.
📢 UPDATE
The numeric input need to be converted into integers/decimals as well for arithmetic calculation.
Besides, take note that user input is always in string so you'll need to use string literals for each of the switch case as well. Hopefully it helps! 😉
+ 4
@Schindlabua you're so much help! Thank you! Now about the Convert.To stuff...I keep getting an exception error saying something about parsing? I've done this before but I'm a bit out of practice and also this isn't JS or CPP lol x.x what can I do yo fix this new one?
+ 4
Got it! The problem was in how it was to be entered. Return must be pressed after each entry! ex:
1
+
1
Seems kinda odd...any way to be able to enter it in a single line?
Thank you all again for the help!
+ 3
Lots of things!
I guess you want x and y to be the numbers you enter, right? Here a problem is that Console.ReadLine gives you text, not a number, so you'd need to convert it like
double x = Convert.ToDouble(Console.ReadLine());
Next, you check for what you want to calculate (+-*/) but you never asked the user for that. You let the user input x and y but not the operator! So you have an empty `switch` and this gives you a syntax error.
Neeext, your print statements want to look like
case "+":
Console.WriteLine("Sum is {0}", x+y);
You have a stray "+" there and the compiler doesn't know what to do with it, so you get more syntax errors. You can also remove the empty `x+y` statement right after the case. You want to print "{0}" in all the cases, it's not like a counter that counts up.
Hope that helps.
+ 3
hmmm made changes but it still isnt working quite right x.x
+ 3
Convert.ToOperator, nice :D
Small detour:
Say you have two numbers, and print their sum.
double a = 123, b = 321;
Console.WriteLine("a + b = {0}", a+b);
It will print 444, as expected.
Of course you can also add text.
string a = "summer", b = "fun";
Console.WriteLine("a + b = {0}", a+b);
It will print summerfun, as expected.
What happens if the text happens to contain numbers?
string a = "123", b = "321";
Console.WriteLine("a + b = {0}", a+b);
It will print 123331, probably not as expected.
That's why programmers are so stingy about types and type conversion. Of course the only thing you do with your operator is compare it to "+", "-", etc, so text is the way to go.
string n = Console.ReadLine();
is totally enough. Convert.ToOperator doesn' even exist :P
Also remove the "x+y;"-like statements immediately after the case, like I wrote in my example above. "default" needs a colon (:) like case, not a semicolon (;).
+ 3
You've kind of figured out the problem, ReadLine will read a whole line, and you do that 3 times. If you're ok with having a space in between each part of your input, like "1 + 2" and not "1+2" you can do it in one line pretty easily.
First you read the line, and split it into an array wherever you encounter a space, like
var parts = Console.ReadLine().Split(' ');
Then you parse the parts instead of seperate lines.
var x = Convert.ToDouble(parts[0]);
var n = parts[1];
var y = Convert.ToDouble(parts[2]);