Java循环字符串替换

时间:2011-11-15 21:38:50

标签: java

我希望我的代码的这一部分用于我的计算器,因为我用变量替换x我需要确保像2x这样的东西是2 * x。当前面有+时,为什么这段代码会添加'*'? 如果pLine =“1 + x”;

为什么还会添加“*”?

for (int j = 0; j < pLine.length(); j++)
    {   
        if (pLine.charAt(j) == 'X' || pLine.charAt(j) == 'x' )
        {
            if(pLine.charAt(j-1) != '+' || pLine.charAt(j-1) != '-' || pLine.charAt(j-1) != '/' || pLine.charAt(j-1) != '*')
                {

                pLine = pLine.substring(0, j) + "*" + pLine.substring(j, pLine.length());
                System.out.println(pLine.substring(0, j));
                break;



                 }
            else
            {

            }


        }

    }

2 个答案:

答案 0 :(得分:5)

此行中的布尔逻辑不正确

if (pLine.charAt(j-1) != '+' || pLine.charAt(j-1) != '-' || pLine.charAt(j-1) != '/' || pLine.charAt(j-1) != '*')

此陈述将永远为真,因为无论该字符是什么,它都不等于'+'或者它不等于'-'

应该是这样的:

char c = pLine.charAt(j-1);
if (!(c == '+' || c == '-' || c == '/' || c == '*'))

或者这个:

if (c != '+' && c != '-' && c != '/' && c != '*')

阅读De Morgan's Laws,了解有关这两个表达式相同的原因的更多解释。

答案 1 :(得分:0)

在以下行中:

if(pLine.charAt(j-1) != '+' || pLine.charAt(j-1) != '-' || pLine.charAt(j-1) != '/' || pLine.charAt(j-1) != '*')

您应该&&而不是||