gpt4 book ai didi

java - 尝试设置值时出现空指针异常

转载 作者:行者123 更新时间:2023-12-01 18:31:20 25 4
gpt4 key购买 nike

我正在制作一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com