Java不会识别“(”和“)”字符串

时间:2013-11-16 20:20:29

标签: java string boolean

我正在尝试解释用户输入的字符串。我接受一个短语,将其拆分为一个数组,并将数组中的每个值与“)”进行比较,作为布尔值。问题是它会读取字符串“(3 + 5)”,我知道接收字符串的数组是[“(”,“3”,“+”,“5”,“)”]和当我打印出数组的第0和第4位时,它返回“(”和“)”。我知道这些是长度为1的类型字符串,但是,当我将完全相同的值与代码中的“(”“)”进行比较时,它返回false。

知道什么是错的吗?这是我的代码。我遇到问题的部分是if语句。

    public String buildExpression(String E){
        String[] exprArr=E.split(" ");      
        int len=exprArr.length;
        BTStacker S = new BTStacker();
        String val;
        for (int i=0; i<len; i++){
            val=exprArr[i];
            System.out.println(val);
            if (val=="("){
                System.out.println("2");
            }
            else if(val != ")"){
                BSTree T=new BSTree();
                BSTNode v=new BSTNode(val,null);
                T.addRoot(v);
                S.push(T);
            }
            else{
                BSTree Ty = S.pop();
                BSTree T=S.pop();
                BSTree Tx=S.pop();
                T.attach(T.root(),Tx,Ty);
                S.push(T);
            }

        }
    }

2 个答案:

答案 0 :(得分:4)

比较Java中的字符串时,需要使用.equals(),而不是==,因为字符串是对象。

答案 1 :(得分:4)

从不使用==比较字符串。

始终使用equals方法进行比较。

val.equals("(")

请注意,当使用“==”比较字符串对象时,您不是要比较它的值,而是它的引用。