如何查找令牌子串?

时间:2017-02-24 14:51:34

标签: java

我目前正在编写一个代码,要求我使用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;
    }
}

但遗憾的是没有用。有没有找到两个令牌的子串?

1 个答案:

答案 0 :(得分:2)

(至少)有2个错误:

错误1)使用charAt()

while(exp.charAt(j) != '/' && exp.charAt(j)!='+' && exp.charAt(j)!='-')

错误2)使用&&

请注意charAt() 的逻辑从||更改为&&;使用||条件始终为真。

您需要对下一个if应用相同的更改。