所以我一直在开发关于如何编写计算器的想法,并且我每次都会继续获取未处理的异常,但代码不会出现任何错误,并且在多次读取代码后我不确定是什么出错了。
string inp;
int location;
double num1, num2, ans;
string[] ops = {"+", "-", "*", "/" };
Console.WriteLine("Calculator");
Console.WriteLine("Enter a Calculation.");
inp = Console.ReadLine();
if (inp.Contains(ops[0]))
{
location = inp.IndexOf("+");
num1 = double.Parse(inp.Substring(0, location));
num2 = double.Parse(inp.Substring(location +1));
ans = num1 + num2;
Console.WriteLine("{0}+{2}={3}", num1, num2, ans.ToString("0.###"));
}
else if (inp.Contains(ops[1]))
{
location = inp.IndexOf("-");
num1 = double.Parse(inp.Substring(0, location));
num2 = double.Parse(inp.Substring(location +1));
ans = num1 - num2;
Console.WriteLine("{0}-{2}={3}", num1, num2, ans.ToString("0.###"));
}
else if (inp.Contains(ops[2]))
{
location = inp.IndexOf("*");
num1 = double.Parse(inp.Substring(0, location));
num2 = double.Parse(inp.Substring(location +1));
ans = num1 * num2;
Console.WriteLine("{0}*{2}={3}", num1, num2, ans.ToString("0.###"));
}
else if (inp.Contains(ops[3]))
{
location = inp.IndexOf("/");
num1 = double.Parse(inp.Substring(0, location));
num2 = double.Parse(inp.Substring(location +1));
ans = num1 / num2;
Console.WriteLine("{0}/{2}={3}", num1, num2, ans.ToString("0.###"));
}
答案 0 :(得分:5)
你没有看到任何东西,因为代码抛出一个异常并且在没有告诉你任何事情的情况下完成,但你可以在调试代码时检测到它;)
代码不会出现任何错误
代码没有编译错误,但您的代码在运行时发生错误
因为这行
你有一个例外Console.WriteLine("{0}+{2}={3}", num1, num2, ans.ToString("0.###"));
{0} + {2} = {3} 必须 {0} + {1} = {2}
因为它们是由
定义的数组中的索引num1, num2, ans.ToString("0.###")
答案 1 :(得分:1)
在此处向用户显示结果时,您的索引顺序错误: Console.WriteLine(“{0} + {2} = {3}”,num1,num2,ans.ToString(“0。###”));
将索引号更改为0,1,2 ......并在格式化字符串时获取变量。
当用户输入多个操作符时,此代码也不起作用,如:22 + 66 + 88
我更新了你的+操作员部分以避免这种情况。看看这个。
string inp;
int location;
double num1, num2, ans = 0.0;
string[] ops = { "+", "-", "*", "/" };
string[] numbers;
string output;
Console.WriteLine("Calculator");
Console.WriteLine("Enter a Calculation.");
inp = Console.ReadLine();
if (inp.Contains(ops[0]))
{
numbers = inp.Split('+');
output = "";
for (int i = 0; i < numbers.Length; i++)
{
ans += Convert.ToDouble(numbers[i]);
}
Console.WriteLine("{0} = {1}", inp, ans.ToString("0.###"));
Console.ReadLine();
}
答案 2 :(得分:0)
在写出结果时,请确保在格式化字符串时使用正确的语法。
Console.WriteLine("{0}+{1}={2}", num1, num2, ans.ToString("0.###"));
答案 3 :(得分:0)
编译是正确的。但它有一些逻辑错误 - 首先需要改变 Console.WriteLine(&#34; {0} + {2} = {3}&#34;,num1,num2,ans.ToString(&#34; 0。###&#34;)) 至 Console.WriteLine(&#34; {0} + {1} = {2}&#34;,num1,num2,ans.ToString(&#34; 0。###&#34;)) 在此更改之后,代码将适用于单个表达式,如2 + 8或3-8 对于多重更改,你需要改变你的逻辑以获得“数字”。来自计算字符串的值。