C# 计算公式方程
当前代码接受公式并执行计算。我正在找到第一个操作员的位置,并计算出左右两侧的编号-C# 计算公式方程,c#,visual-studio-2010,C#,Visual Studio 2010,当前代码接受公式并执行计算。我正在找到第一个操作员的位置,并计算出左右两侧的编号- //array of characters char[] arrayOfOperators = {'/', '*', '+', '/'}; string input = "5+4+6+1"; foreach (int i in input) { while (arr
//array of characters
char[] arrayOfOperators = {'/', '*', '+', '/'};
string input = "5+4+6+1";
foreach (int i in input)
{
while (arrayOfOperators.Any(input.Contains))
{
int sign = input.IndexOf( ); //current operator ()
Console.WriteLine(sign);
string beforeOperator = input.Substring(0, sign);
string afterOperator = input.Substring(sign + 1);
// populate these two variables
int previousOperatorPosition = (beforeOperator.LastIndexOf('+')); // instead of +??
int nextOperatorPosition = (afterOperator.IndexOf('+')); // instead of +??
//parse and store in a variable
int leftNumber = int.Parse(beforeOperator.Substring(previousOperatorPosition + 1));
int rightNumber = 0;
if (nextOperatorPosition != -1)
{
rightNumber = int.Parse(afterOperator.Substring(0, nextOperatorPosition));
}
else
{
rightNumber = int.Parse(afterOperator);
}
// Do calculation with 2 previous variables, and store result in variable
int result = (leftNumber + rightNumber);
input = (beforeOperator.Substring(0, previousOperatorPosition + 1) + result + (afterOperator.Substring(1)));
我正在尝试获取当前运算符-int sign=input.IndexOf;我不确定括号里应该有什么
以及这里-
int previousOperatorPosition = (beforeOperator.LastIndexOf('+')); // instead of +??
int nextOperatorPosition = (afterOperator.IndexOf('+')); // instead of +??
非常感谢您的帮助,谢谢我真的建议您使用类似的工具。它更加健壮,易于使用,而且毕竟,通过解析字符串并尝试对其求值,您不会感到头痛。。。试着阅读更多关于ANTLR、Roslyn或类似的内容……将表达式从中缀转换为后缀,然后从堆栈中弹出操作符要容易得多。看见