Java字符串标识

时间:2014-02-19 00:14:41

标签: java parsing tree integer

好吧所以我有第一个类分解字符串,删除空格和所有内容,将它放入Arraylist并将其提供给此parseRec类。出于某种原因,当第一个字符为“+”时,它不会注册第一个if语句。它超越了它转到了只应该采用整数的else语句。任何想法为什么?

public static Expression parseRec(ArrayList<String> list) {
    while (list.size() != 0) {
        if (list.get(i) == "+") {
            System.out.println("got this far");
                    .....................

        else {
            System.out.println(list.get(i));
            String intE = list.get(i);
            Expression intExp = new IntExpression(intE);
            list.remove(i);
            return intExp;
        }
    }

3 个答案:

答案 0 :(得分:1)

Stringequals()方法进行比较:

if (list.get(i).equals("+")) {

而不是:

if (list.get(i) == "+") {

==比较引用而不是字符串内容。要比较两个String个对象的内容,请不要使用==

答案 1 :(得分:1)

重写此部分

 if (list.get(i) == "+") {
        System.out.println("got this far");
                .....................

作为

 if (list.get(i).equals("+")) {
        System.out.println("got this far");
                .....................

字符串的比较应由.equals()进行,以便进行精确的价值比较。

答案 2 :(得分:0)

我可能会这样做

if ("+".equals(list.get(i))

以避免在list.get(i)为空的情况下出现NullPointerException