2013-03-04 54 views
0

我是个C#初学者在这里,我要带去从文本字符串和运用以下算法中,但操作数和运算符不工作的断裂..执行算术运算在字符串在C#中

string cal = "225+699"; 
     char[] all= cal.ToCharArray(); 
     int i=0,j=0; 
     while (all[i] != '+' || all[i] != '-' || all[i] != '/' || all[i] != 'x') 
     { 

      j++; 

     } // first operator check 
     char op = all[j + 1]; // operator save 
     char[] part1 = new char[j]; 

     for (i = 0; i <= j; i++) 
     { 
      part1[i] = all[i]; 
     } 
     string inp = Convert.ToString(part1); 
     float a = float.Parse(inp); // first operand 
     int l=cal.Length-(j+1); 
     char[] part2 = new char[l]; 
     int c = 0; 
     for (i = j + 1; i <= cal.Length; i++)// starts after operator 
     { 
      part2[c] = all[i]; 
      c++; 

     } 

     string h = Convert.ToString(part2); 
     float b = float.Parse(h); // other operand 
+1

如果你的算法的目的只是解析算术表达式,你可以使用C#的一些内置特性,比如'ScriptControl()'。在这里看到一个例子:http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net – niculare 2013-03-04 20:45:32

回答

1

先决条件:学习基础知识语言。例如,您可以在字符串上使用索引器,或者如何使用列表而不是数组。了解逻辑运算符是如何工作的,例如while条件总是为true或引发异常,但它似乎不合适,因为这里没有嵌套循环,但它看起来像属于一个循环。底线是 - 你要做得太深,太快。

如果你是一个初学者,想学习的解析......回去的书,读一些理论,找出Reverse Polish Notation,以及如何使用它

如果你正在寻找解决解析问题是为了解决一些其他任务看看 FLEE,它可以为你做解析,并且从实际的角度来看可能更有用(尽管理论知识有其优点并且不应该被解雇)