我需要比较两个Integer数组,以了解它们是否相反(由布尔结果确定),在大多数情况下它最终工作得很好,但每当我试图知道以下数组时与另一个相反,它最终给了我麻烦,我不明白为什么。
boolean result = true;
Integer [] a1 = {999,1000,null};
Integer [] a2 = {null,1000,999};
if (a1.length>0){
for (int i=0;i<a1.length;i++){
if (a1[i] != a2[a1.length-i-1]){
return result = false;
}
}
}else{
result = true;
}
我注意到如果我稍微更改两个数组的值(例如,99而不是999,或100而不是1000),它就可以工作。
有人可以帮我一把吗?谢谢你的建议!
答案 0 :(得分:0)
您应该使用Integer类的equals()
方法来比较两个Integer对象:https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#equals(java.lang.Object)
当您这样做时,在比较null
值时应该小心。
您还应该检查数组的大小是否相同,否则您可能会遇到索引问题。
此代码应该可以满足您的需求:
public class Kot {
public static void main(String[] argv) {
boolean result = true;
Integer[] a1 = {999, 1000, null};
Integer[] a2 = {null, 1000, 999};
if (a1.length != a2.length) {
result = false;
} else if (a1.length > 0) {
for (int i = 0; i < a1.length; i++) {
if (a1[i] == null && a2[a1.length - i - 1] == null) {
continue;
}
if (!a1[i].equals(a2[a1.length - i - 1])) {
result = false;
}
}
} else {
result = true;
}
System.out.println(result);
}
}