我是一个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
答案 0 :(得分:1)
先决条件:学习语言的基础知识。例如,您可以在字符串上使用索引器或如何使用列表而不是数组。了解逻辑运算符的工作原理,例如while
条件总是为真或抛出异常,它似乎也不合适,因为这里没有嵌套循环,但看起来它属于一个。底线是 - 你走得太深,太快了。
如果您是初学者并且希望学习解析...请回到书本并阅读一些理论,找出Reverse Polish Notation是什么以及如何使用
如果您正在寻找解决解析问题以解决其他任务的问题 FLEE,它可以为你做解析,从实际的角度来看可能更有用(虽然理论知识有其优点,不应该被忽略)