If-else阻止在真实条件下不返回true,我该怎么办?

时间:2017-12-09 17:13:28

标签: java eclipse if-statement character-encoding conditional

我很难理解为什么扫描仪没有拿起“(”字符显然在那里。当我试图保存我的程序时,有一个弹出窗口说有些字符不能不能用正确的编码保存。(我正在使用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));
        }
    }   

1 个答案:

答案 0 :(得分:1)

当使用==时,检查两个字符串是否具有相同的引用,在这种情况下将返回false

您应该使用temp.equals("(")temp.equals(")")等等。

使用equals方法比较字符串会检查它们的值,这将是真实的。