小弟java初学者,想返回值为一个数组
public class arraytest {
public static void main(String[] args) {
int[]a=new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
arr(a);
}
public static int []arr(int a[]){
int arr[] =null ;
for (int k=0;k<=2;k++){
arr[k]=a[k]+1;
System.out.println(arr[k] );
}
return arr;
}
}
Exception in thread "main" java.lang.NullPointerException
at interesting.arraytest.arr(arraytest.java:14)
at interesting.arraytest.main(arraytest.java:9)
请高手帮忙改写。

解决方案 »

  1.   

    问题在于源代码第10行 int arr[ ]  未分配数组空间
    导致第12行 arr[k]=a[k]+1; 抛出NullPointerException
      

  2.   

    int arr[] =null ;要先确定你返回数组的长度,相当于new arr[n],然后再循环赋值,赋值完后返回arr
      

  3.   


    所有报错的时候,你要先找到报错的 行数,看具体哪块报错了Exception in thread "main" java.lang.NullPointerException
     at interesting.arraytest.arr(arraytest.java:14)
     at interesting.arraytest.main(arraytest.java:9)报错在  第14行,第9行因为引用了  下面  arr();方法,所以也提示报错。
    问题是出现在第14行,  而且 出现java.lang.NullPointerException  是第14行 使用的某个对象 为null,没有 分配内存空间。
    第14行 并且 为 null  的就只有  arr[k ]=a[k]+1;   你只要给  arr数组分配好空间即可
      

  4.   

    int arr[] =null ; 
    这行有问题,数组还是空,你下面用arr[k]就会报错
      

  5.   

    int arr[] =null ;
    新人经常犯的错误,只声明了变量,而没有分配内存空间。要么new一个,要么赋值给它才可以得到内存空间,然后才可以引用他,加油吧,依稀看到我初学时候的影子。
      

  6.   

    数组定义的同时,还要初始化长度啊。
    int[] arr = new int[3];此时得到的arr是{0,0,0}
    int[] arr = null;此时arr为空,零个元素,当然报空指针啦
      

  7.   

    你声明的arr[]只是一个引用变量,这个引用变量在栈内存中,实际保存的只是一个地址值,这个地址指向的是堆内存中的真正的数组对象,而数组对象应该由一系列的元素组成。你这里定义的是int []类型的数组,所以里面的数组元素都应该是int类型的。如果你建立数组对象时没有显式地指定初值,那就应该给数组分配内存空间,比如说 int [] arr = new int[7]; 这样系统就会为这个数组实行动态初始化,也就是自动为数组元素赋初值,这里对应int[]类型的数组应该是int类型的元素,所以系统自动赋的初始值都是0。所以注意所有元素都是0和数组里没有元素是不一样的。