我有这段代码:
public static ArrayList type = new ArrayList<Integer>();
///////////some code//////////
System.out.println(normalization.type.get(i));
System.out.println(normalization.type.get(i) == "1");
它给我输出
1
false
我尝试过单引号和等号方法,但仍然不匹配。 任何想法??
答案 0 :(得分:1)
Integer是一个Object,因此您必须使用equals
方法。
此外,"1"
是一个字符串,因此它不能等于整数1
您必须执行以下操作:
System.out.println(normalization.type.get(i).equals(new Integer(1)));
OR
System.out.println(normalization.type.get(i).equals(1));
答案 1 :(得分:0)
您正在将Integer
与String
进行比较
normalization.type.get(i) == "1"
"1"
是一个字符串,类型中包含整数。
使用:
normalization.type.get(i).equals(1)
答案 2 :(得分:0)
我想作为替代方案,您可以尝试使用Java 7中出现的Objects#equals(Object, Object)
。如果索引true
处的元素等于,则以下代码将打印i
1
:
System.out.println(Objects.equals(normalization.type.get(i), 1));
以下是该方法的实现:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
您的问题是,您尝试将Integer
与String
进行比较,false
将始终返回{{1}}。
答案 3 :(得分:0)
您正在将整数与字符串进行比较。 (或char,当你使用单引号时)
尝试normalization.type.get(i)== 1