【问题标题】:Java will not recognize "(" and ")" strings [duplicate]Java将无法识别“(”和“)”字符串[重复]
【发布时间】:2013-11-30 03:54:26
【问题描述】:

我正在尝试解释用户输入的字符串。我接受一个短语,将其拆分为一个数组,并将数组中的每个值与“)”作为布尔值进行比较。问题是它会读取字符串“( 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);
            }

        }
    }

【问题讨论】:

  • 你不是在比较字符串,而是对字符串的引用。
  • 没有人在提问之前搜索或阅读文档吗?

标签: java string boolean


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    val.equals("(")

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

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 2014-12-02
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      相关资源
      最近更新 更多