所以,我有一种解析表达式的算法。此外,无论是否有括号,都有条件方式。我正在制作表达式并将其放入字符串变量中,例如:
string expression = "6*(3+2)";
然后我让它通过解析函数。在它给我奇怪的结果之后,我去调试解析函数并注意到那里出现了奇怪的事情:
当我从右到左迭代字符串的字符时
for (int i = (expression.Length -1); i>=0; i--) ...
它没有通过条件
if (expression[i].Equals(")")) ...
当表达式[i]显示在“)”上时,因为我在 Visual Studio 的“Locals”部分看到它。
这是为什么?
我需要做的是:
if (expression[i].ToString() == ")") ...
然后我就会得到正确的结果。它不允许我执行 expression[i] == ")" 因为它说我不能在 char 和 string 上应用“==”运算符。
那么,为什么.Equals在“)”时没有通过呢?
这是为什么?
字符与字符串不同。一个字符串是一个sequence的字符。的类型expression[i]
is char
, not string
- 所以你想将它与char
文字:
if (expression[i] == ')')
请注意单引号 (')'
) 而不是您使用的双引号 (")"
)。单引号用于字符文字;双引号用于字符串文字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)