我正在尝试解释用户输入的字符串。我接受一个短语,将其拆分为一个数组,并将数组中的每个值与“)”进行比较,作为布尔值。问题是它会读取字符串“(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);
}
}
}
答案 0 :(得分:4)
比较Java中的字符串时,需要使用.equals()
,而不是==
,因为字符串是对象。
答案 1 :(得分:4)
从不使用==
比较字符串。
始终使用equals
方法进行比较。
val.equals("(")
请注意,当使用“==”比较字符串对象时,您不是要比较它的值,而是它的引用。