Я пытаюсь создать довольно простую симуляционную игру цивилизации для школы. Сейчас я пытаюсь это сделать, когда вы нажимаете эту кнопку на панели управления, вы делаете новый экземпляр хижины. Я поставлю отчет об ошибке ниже и код, где происходит ошибка.NullPointerException в массиве класса Hut
Отчет об ошибках:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at controls.Sidebar.clickBuildHut(Sidebar.java:102)
at screen_window.Game_Window.mouseClicked(Game_Window.java:248)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
код, где происходит ошибка:
public void newHut() {
numOfHuts++;
hut[numOfHuts] = new Hut(mouseX, mouseY, 0, numOfHuts);
}
Hut заявление в верхней части класса:
Hut[] hut = new Hut[9999];
int numOfHuts;
Sidebar.clickBuildHut метод:
public boolean clickBuildHut(int mouseX, int mouseY){
if (viewConstruction){
int topLeftX = x + 2;
int topLeftY = y + 50 - 14;
int selectionWidth = width - 10;
int selectionHeight = 17;
for (int i = 0; i <= width; i++) {
for (int h = 0; h <= height; h++) {
if (mouseX == topLeftX + i && mouseY == topLeftY + h) {
first_map.setEditMode(true);
game_window.newHut();
return true;
}
}
}
}
return false;
}
first_map.setEditMode:
public void setEditMode(boolean editMode) {
this.editMode = editMode;
}
Хотя я не думаю, что это проблема, потому что, когда это переключается правда, я вижу изменения изображения правильно. Если вы хотите, чтобы я дал вам больше информации об этом, я могу, но я не думаю, что это было бы полезно, поскольку это не проблема.
'Hut [] hut = new Hut [1234];' – jlordo
Вы инициализируете 'hut' где угодно? – thejh
Трассировка стека указывает, что NPE происходит в методе 'clickBuildHut', но вы указали метод' newHut'. Пожалуйста, покажите метод 'clickBuildHut'. – rgettman