【发布时间】: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);
}
}
}
【问题讨论】:
-
你不是在比较字符串,而是对字符串的引用。
-
没有人在提问之前搜索或阅读文档吗?