我很难理解为什么扫描仪没有拿起“(”字符显然在那里。当我试图保存我的程序时,有一个弹出窗口说有些字符不能不能用正确的编码保存。(我正在使用Eclipse,如果有任何帮助,它会使用Cp1252编码)我将其更改为UTF-8,现在我遇到了这些问题。
String input = "a 0 ( b 4 ( * 100 b 6 ) w 9 ( x 3 y 5 ( * 2 z 3 ) ) )";
LinkedStack<TreeNode<String>> stack = new LinkedStack<TreeNode<String>>();
Scanner in = new Scanner(input);
while (in.hasNext()) {
String temp = in.next();
System.out.println("Here's a temp:" + temp);
if (temp == "(") {
System.out.println("Continuing.");
continue;
}
else if (temp == ")") {
System.out.println("Closed Paren.");
TreeNode<String> leftChild = stack.pop();
TreeNode<String> rightChild = stack.pop();
TreeNode<String> parent = stack.pop();
parent.setLeft(leftChild);
parent.setRight(rightChild);
stack.push(parent);
}
else {
System.out.println("Hit the else block.");
String label = temp;
String distanceString = in.next();
double distance = Double.parseDouble(distanceString);
System.out.println("Here is the distance of this node: " +distance);
stack.push(new TreeNode<String>(label, null, null, distance));
}
}
答案 0 :(得分:1)
当使用==
时,检查两个字符串是否具有相同的引用,在这种情况下将返回false
。
您应该使用temp.equals("(")
和temp.equals(")")
等等。
使用equals
方法比较字符串会检查它们的值,这将是真实的。