我正在制作一个名为 Spots
的对象数组,它们象征着骰子的不同面。
它接受用户输入(在本例中手动设置为 3),然后创建 Spots
并滚动一个从 1 到 6 的随机数。
但是,当我在已经创建的 Spots
数组上使用 rollAgain()
方法时,即使我在中使用相同的变量长度,我也会得到一个空指针两个 for 循环(一个创建点,一个滚动点)。
我的代码
全局变量
private Spots[] spots;
private int x = 3;
构造函数
public Director(JFrame window, String args[]) {
JMenuBar menus = new JMenuBar();
window.setJMenuBar(menus);
menus.add(makeFileMenu());
window.getContentPane().add(makePanel(), BorderLayout.WEST);
window.getContentPane().add(makeSpots(x), BorderLayout.CENTER);
rollAgain();
}
rollAgain()方法
public void rollAgain() {
int v = 1 + (int) (Math.random() * 6);
for (int i = 0; i < x; i++) {
spots[i].setValue(v);
}
}
makeSpots()方法
private JComponent makeSpots(int x) {
JPanel p = new JPanel();
p.setBorder(BorderFactory.createTitledBorder("Dice"));
Spots[] spots = new Spots[x];
for (int i = 0; i < x; i++) {
spots[i] = new Spots(200, 200);
spots[i].setBorder(BorderFactory.createEtchedBorder());
p.add(spots[i]);
}
return p;
}
最佳答案
您正在设置局部变量
Spots[] spots = new Spots[x];
这不会更改字段(恰好具有相同的名称)
private Spots[] spots;
最简单的解决方案是不使用局部变量
this.spots = new Spots[x];
关于java - 尝试设置值时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24042681/