C# 捕获异常未在操作字符串上拾取

C# 捕获异常未在操作字符串上拾取,c#,C#,我正试图用C#语言制作一个计算器,以便练习。我的第一步是解析用户输入方程。出于故障排除的目的,我试图看看我的解析器是否能够区分数字和运算符号(例如“+”、“-”、“/”等)。其思想是将用户输入操作与包含允许的操作(+、-、/、*)的字符数组进行比较。如果其中一个允许的操作是由用户输入的,代码应该说这是一个允许的操作。执行此操作的代码如下所示: public static void ProcessEq(string equation) { /

我正试图用C#语言制作一个计算器,以便练习。我的第一步是解析用户输入方程。出于故障排除的目的,我试图看看我的解析器是否能够区分数字和运算符号(例如“+”、“-”、“/”等)。其思想是将用户输入操作与包含允许的操作(+、-、/、*)的字符数组进行比较。如果其中一个允许的操作是由用户输入的,代码应该说这是一个允许的操作。执行此操作的代码如下所示:

        public static void ProcessEq(string equation)
        {
            //Parse the equation using regular expression
            equation = equation.Replace(" ", "");
            char[] operations = { '+', '-', '*', '/' };
            string[] parts = Regex.Split(equation, @"(?<=[-+*/()])|(?=[-+*/()])");
            foreach (string item in parts)
                //Console.WriteLine(item + " is being tested...");
                try
                {
                    float num = Int32.Parse(item);
                    Console.WriteLine(item + " is a number");
                }
                catch(FormatException)
                {
                    if ( Array.IndexOf(operations, item) > -1 )
                    {
                        Console.WriteLine(item + " is a valid operation");
                    }
                    else
                    {
                        Console.WriteLine(item + " is NOT a valid operation");
                    }

                }

        }
publicstaticvoidprocesseq(字符串方程)
{
//用正则表达式解析方程
方程式=方程式。替换(“,”);
char[]操作={'+','-','*','/'};

string[]parts=Regex.Split(等式,@)(?Array.IndexOf正在字符数组中查找字符串。您只需将其更改为

if ( Array.IndexOf(operations, item[0]) > -1 )


解决它。

有很多不同的方法。哪种方法最适合你取决于太多你没有解释的事情。如果你决定手工创建一个表达式计算器而不是使用其中一个,你已经走错了方向。例如,你需要去掉那个正则表达式,构建一个t返回字符串是否为整数。我从正则表达式开始,因为我知道最终我希望解析器能够处理复杂的表达式。我对C#完全陌生,所以我仍在不断学习。我知道我可能根本没有构建一个高效的解析器。无论如何,我只是想尝试一下,以便通过t学习到处转悠。谢谢你的指点。啊,好吧,这很有意义。现在修好了,我可以继续了!谢谢!
if ( Array.IndexOf(operations, Convert.ToChar(item)) > -1 )