Я работаю над программой, которая отображает 8 пар карт лицевой стороной вниз в сетке 4 х 4, и вам нужно найти пары, чтобы выиграть.Получение нулевого указателя, не знаю почему
Я написал классы, и когда я пытаюсь запустить, я получаю исключение NullPointerException. Но я не знаю почему.
Это код, где ошибка сидит:
public Game(String s)
{
super(s);
JPanel cp = (JPanel)getContentPane();
cp.add("North", scoreLabel);
surface = new JPanel();
surface.setLayout(new GridLayout(4, 4));
cp.add("Center", surface);
prepareCards();
for (int x = 0; x < 16; x++)
{
Card temp = p.dealCard();
System.out.println(temp);
temp.addMouseListener(cardHandle);
**surface.add(temp);**
}
}
public static void main(String args[])
{
*Game game = new Game("TEST GAME PLEASE IGNORE");*
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setSize(600, 400);
game.setVisible(true);
}
Ошибка ниже (это не очень полезно).
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at certClasses.Game.<init>(Game.java:39)
at certClasses.Game.main(Game.java:44)
Линия 39 находится в двойных звездочками (** **), линия 44 находится в одиночных звездочками (* *).
Я искал ошибки и не получил ничего полезного (квесты stackoverflow закрыты, что вряд ли поможет другим, в основном). Я могу опубликовать весь код на pastebin, когда смогу; Сейчас я не дома, а пастебин заблокирован как «Личное сетевое хранилище и резервное копирование».
Похоже, что вы никогда не создавали экземпляр поверхности. – Tyler
Является ли 'temp' null? –
Поскольку 'JPanel.add (null)' приводит к 'NullPointerException',' p.dealCard(); 'возвращает, вероятно,' null'. Вы увидите строку ** «null» ** в вашем 'System.out.println (temp);' statement. – bobbel