【问题标题】:Troubles comparing Integer arrays [Java]比较整数数组的麻烦 [Java]
【发布时间】:2016-09-20 19:53:03
【问题描述】:

我需要比较两个整数数组以了解它们是否相互反转(由布尔结果确定),在大多数情况下它最终工作得很好,但每当我尝试知道以下数组是否与另一个相反,它最终给我带来了麻烦,我不明白为什么。

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),它就会起作用。

有人可以帮我解决这个问题吗?谢谢指教!

【问题讨论】:

标签: java arrays integer


【解决方案1】:

您应该使用 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);
  }
}

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2011-01-18
    • 2020-02-13
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多