从方法中创建的数组中的NullPointerException

时间:2015-01-28 15:23:03

标签: java arrays

我目前正在做一个关于数组的简单大学项目。

在我的项目中,我使用名为“setArray”的方法初始化并填充数组,但是当程序返回我尝试打印数组内容的main方法时,它返回NullPointerException。

public class Main {


public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int num[] = null;

    String command;

    setArray(in, num);



    for(int i = 0; i < num.length ; i++)
    {
        System.out.println(num[i]);
    }
}
private static void setArray(Scanner in, int[] num)
{
    System.out.println("Type the array size: ");
    int dim = in.nextInt();

    num = new int[dim];

    System.out.println("Size: " + num.length);

    System.out.println("Type the numbers' variability: ");

    int var = in.nextInt();

    int ran;

    for(int i = 0; i < num.length ; i++)
    {
        ran = (int) (Math.random() * var);

        num[i] = ran;
        System.out.println(num[i]);
    }
}

2 个答案:

答案 0 :(得分:2)

查看this question关于Java是否通过参考

你的代码会更好:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int num[] = null;

    String command;

    num = setArray(in);

    for(int i = 0; i < num.length ; i++)
    {
        System.out.println(num[i]);
    }
}
private static int[] setArray(Scanner in)
{
    System.out.println("Type the array size: ");
    int dim = in.nextInt();

    int[] numToReturn = new int[dim];

    System.out.println("Size: " + numToReturn.length);

    System.out.println("Type the numbers' variability: ");

    int var = in.nextInt();

    int ran;

    for(int i = 0; i < numToReturn.length ; i++)
    {
        ran = (int) (Math.random() * var);

        numToReturn[i] = ran;
        System.out.println(numToReturn[i]);
    }
    return numToReturn;
}

答案 1 :(得分:1)

如果你看到你的代码,你在setArray(scanner in,int [] num)方法中声明一个局部变量num,这在main函数中是不可见的,也不是你在main函数中声明的那个。 main函数中的变量数组num与setArray()函数中的变量数组不同。