我不断收到NullExceptionError,但我不知道为什么。我知道当我引用尚未初始化的对象时,会发生此类错误。在这种情况下,错误显然发生在第二个文件的第二行(我评论了那个),但是我很确定自己已经初始化了该行中的所有内容。所以我不知道该怎么办错误。顺便说一句,文件编译很好,仅当我按向左箭头按钮时才会出现错误。public class SnakeGame {JFrame frame;Draw draw;Timer timer;int direction;public static void main(String[] arg) { new SnakeGame();}SnakeGame() { draw = new Draw(); frame = new JFrame("Snake"); frame.add(draw, BorderLayout.CENTER); frame.setResizable(false); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.addKeyListener(draw); frame.requestFocusInWindow();}}--public class Draw extends JPanel implements ActionListener, KeyListener {SnakeGame snakeGame;public Draw(SnakeGame snakeGame) { this.snakeGame = snakeGame;}public Draw() { setPreferredSize(new Dimension(500,500)); setBackground(Color.BLACK); setFocusable(true);}@Overridepublic void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if(key == KeyEvent.VK_LEFT){ System.out.println("left pressed"); setDirection(1); } else if (key == KeyEvent.VK_RIGHT) { System.out.println("right pressed"); } else if (key == KeyEvent.VK_UP) { System.out.println("UP pressed"); } else if (key == KeyEvent.VK_DOWN) { System.out.println("down pressed"); }}@Overridepublic void keyReleased(KeyEvent e) {}@Overridepublic void keyTyped(KeyEvent e){}public int getDirection(){ return snakeGame.direction;}public void setDirection(int dir){ snakeGame.direction = dir; //According to the compiler the error occurs here System.out.println(snakeGame.direction);}} 最佳答案 如果我没看错的话,初始化snakeGame的唯一方法就是调用Draw(SnakeGame snakeGame),据我所知,它从未被调用过。在SnakeGame构造函数中,您正在调用new Draw();,您可能希望将其更改为new Draw(this);。然后,您还希望在另一个的无参数构造函数Draw()中进行调用,例如setPreferredSize(new Dimension(500,500));等附带说明:Draw看起来很像方法名称(这就是为什么我最初认为Draw()是设置方法而不是构造函数的原因。如果将类名更改为类似等,即使用名词作为类名,使用动词或“命令”作为方法名等。有关基本的命名约定,请参见此Wikipedia文章:http://en.wikipedia.org/wiki/Naming_convention_%28programming%29使用这些功能使您的程序员工作变得更加轻松,并且增加了他们从他人那里获得帮助的机会,因为他们更容易理解您的代码。关于java - 为什么会出现此NullExceptionError?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26551538/
10-10 08:29