有人能告诉我这个方法有什么问题吗?为什么它会给出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;
}
答案 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)...尝试循环并找到答案...会得到答案....... 希望如果有帮助......:)