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