比较2个int数组

时间:2011-06-12 12:05:52

标签: java

有人能告诉我这个方法有什么问题吗?为什么它会给出nullpointerException?

public boolean check(){

    Scanner scan = new Scanner(System.in);

    int[] arr1 = new int []{1,2,3};
    int[] arr2 = new int[]{};

    for(int i = 0;i<arr1.length;i++)
    {
        System.out.println("Enter numbers to check");
        arr2[i] = scan.nextInt();
    }

    if(arr1 == arr2)
        return true;

    return false;
}

3 个答案:

答案 0 :(得分:5)

您没有为arr2分配足够的内存。在这种情况下,arr2初始化为长度为0。

你的第3行应该是这样的:

int[] arr2 = new int[arr1.length];

此外,if(arr1 == arr2) 是比较两个数组是否具有相同元素的正确方法。

相反,您可以使用java.util.Arrays.equals()检查两个数组是否相等。

答案 1 :(得分:2)

Scanner scan = new Scanner(System.in);
int[] arr1 = new int[]{1,2,3};
int[] arr2 = new int[arr1.length];
for (int i = 0 ; i < arr1.length ; i++) {
  System.out.println("Enter numbers to check");
  arr2[i] = scan.nextInt();
  if (arr1[i] != arr2[i])
    return false;
}
return true;

答案 2 :(得分:2)

你没有为arr2分配任何大小,所以它导致它的大小声明为0,你输入的值最终导致空值.... 并且你也不能像你所做的那样比较数组,即使你可以将一个数组为null也不会给出任何结果........... 尝试初始化arr2与大小和书房而不是做(arr1 == arr2)...尝试循环并找到答案...会得到答案....... 希望如果有帮助......:)