生成随机数时出现NullPointerException

时间:2016-01-11 04:55:49

标签: java random nullpointerexception

我在第14行得到一个NullPointerException:

points[i].x = new Random().nextInt(30);

我的完整代码:

import java.util.Random;

public class RandomPoints {
    public class Point {
         public int x;
         public int y;
    }

    public static void main(String[] args) {
        Point[] points = new Point[100];
        for(int i = 0; i < points.length; i++) {
            points[i].x = new Random().nextInt(30);
            points[i].y = new Random().nextInt(30);
            System.out.println(points[i].x + " " + points[i].y);
        }           
    }
}

1 个答案:

答案 0 :(得分:1)

当您说Point[] points = new Point[100];时,它只会分配一个包含100 Point个引用空间的数组(它不会分配任何Point个实例)。您需要先为索引分配一个实例,然后才能访问它,例如

Point[] points = new Point[100];
for(int i = 0; i < points.length; i++) {
    points[i] = new Point(); //<-- like so.

此外,最好重用一个在数组外创建的Random

Random rand = new Random();

否则你在每次迭代时重新设置(两次)。这意味着你的数字不会随机发生。