我目前正在编写一个代码,要求我使用String Tokenizer方法来计算表达式。这很好,因为我理解如何使用它们,但为了将新值添加到字符串并删除两个计算值(因为该方法必须是递归的),我想使用String.replace()
方法。但是,我无法弄清楚如何找到两个令牌的子串,我这样试了:
for(int j=0; j<expr.length(); j++)
{
int firstSub = 0;
int secondSub = 0;
int sign = j;
if(expr.charAt(j)=='*')
{
while(j != '/' || j!='+' || j!='-')
{
j--;
}
firstSub = j+1;
while(sign != '/' || j!='+' || j!='-')
{
sign++;
}
secondSub = sign-1;
}
}
但遗憾的是没有用。有没有找到两个令牌的子串?
答案 0 :(得分:2)
(至少)有2个错误:
charAt()
:while(exp.charAt(j) != '/' && exp.charAt(j)!='+' && exp.charAt(j)!='-')
&&
请注意charAt()
和的逻辑从||
更改为&&
;使用||
条件始终为真。
您需要对下一个if
应用相同的更改。