好吧所以我有第一个类分解字符串,删除空格和所有内容,将它放入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;
}
}
答案 0 :(得分:1)
将String
与equals()
方法进行比较:
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