c# - 知道为什么这个计算器控制台应用程序不起作用吗?

标签 c# console-application calculator unhandled-exception

所以我一直在发展我关于如何编写计算器的想法,但我每次都收到未处理的异常,但代码没有出现任何错误,在多次阅读代码后我不确定是什么出问题了。

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.###"));
}

最佳答案

你什么也看不到,因为代码抛出异常并且在没有告诉你任何事情的情况下完成,但如果你调试代码,你可以检测到它;)

the code does not present any errors

代码没有编译错误,但您的代码在运行时产生错误

因为这一行你有一个异常

Console.WriteLine("{0}+{2}={3}", num1, num2, ans.ToString("0.###"));

{0}+{2}={3} 必须是 {0}+{1}={2}

因为它们是

定义的数组中的索引
num1, num2, ans.ToString("0.###")

关于c# - 知道为什么这个计算器控制台应用程序不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40043658/

相关文章:

c++ - 链接到 DLL 的未处理异常

Java计算器(运算顺序)

java - 所得税计算器

c# - 使用 for 循环渲染 TreeView

java - 是否可以在字符串值 Java 控制台之间创建输入扫描器?

c++ - Visual Studio 2017 c++ win32 控制台项目模板

C#语言,计算器

c# - 每台机器都使用相同的种子生成相同的随机数结果吗?

c# - 使用 XPath 实现 IXmlSerializable ReadXml() 的最佳方法

c# - 有没有办法确定 try/catch 覆盖率的差距?