我在第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);
}
}
}
答案 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();
否则你在每次迭代时重新设置(两次)。这意味着你的数字不会随机发生。