我正在处理一段代码,这些代码会随机地在我的游戏屏幕上放置圆圈(简单地说)。我在代码中没有错误,但我遇到了一个问题,它想要编写更多的绘制代码,但我想输入更多,这里是代码。我正在使用JFrame
public class Game extends JPanel{
public static final long serialVersionUID = 2L;
public static Random random;
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
Dimension ScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) ScreenSize.getWidth();
int height = (int) ScreenSize.getHeight();
for(int i=1; i<12; i++){
int rw = random.nextInt(width);
int rh = random.nextInt(height);
int radius = random.nextInt(50);
g.setColor(Color.gray);
g.fillOval(rw, rh, radius+50, radius+50);
}
` 错误代码就像这样出现
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Game.paintComponent(Game.java:18)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
简单地说,我做错了什么以及如何解决它?
答案 0 :(得分:1)
您在不初始化的情况下使用随机变量:
Random random;
应该是
Random random = new Random();
更重要的是,您需要学习如何调试NPE(NullPointerException)的一般概念。 你应该批判性地阅读你的异常堆栈跟踪以找到错误的代码行,抛出异常的行,然后仔细检查该行,找出哪个变量为null,然后追溯到你的代码,看看为什么。你会一次又一次地碰到这些,相信我。
同样在将来,请努力提出更完整的问题,包括任何和所有错误消息,并包括指示哪一行抛出异常。这将极大地降低挫折程度。