java.lang.NullPointerException | попытайтесь получить значение из другого массива класса

71
7

Сейчас я работаю над игрой с другом, и у меня возникли проблемы с реализацией функции сохранения в игре. Но я все время получаю NullPointerExceptions каждый раз, когда я пытаюсь получить определенное значение из массива.

SaveGame.java:

public class SaveGame {
static int newValue;
//unnecessary stuff hidden...

public static void SaveGame() {
//The class which uses getTokenPositionList()
}

//Saves the positioning of the tokens within a String
static String getTokenPositionList() {
String tokenPositionList = "";
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
tokenPositionList = tokenPositionList + KodeKs.KodeKsData.getKodeKsData(row, col);
}
}
return tokenPositionList;
} // end getTokenPositionList()
}

KodeKs.java:

public class KodeKs extends JPanel {
public KodeKs() {
//lots of unessecary stuff hidden
public static class KodeKsData {
public static int[][] board;
public KodeKsData() {
board = new int[10][10];
setUpGame();
}
public static int getKodeKsData(int row, int col) {
return board[row][col];

}
//more stuff hidden
}
}
}

И это код ошибки, который я получаю при запуске этого материала:

> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
> at KodeKs$KodeKsData.getKodeKsData(KodeKs.java:597) at
> SaveGame.getTokenPositionList(SaveGame.java:61) at
> SaveGame.SaveGame(SaveGame.java:33) at
> KodeKsToolBar$3.actionPerformed(KodeKsToolBar.java:48) at
> javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at
> javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at
> javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at
> javax.swing.DefaultButtonModel.setPressed(Unknown Source) at
> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown
> Source) at java.awt.Component.processMouseEvent(Unknown Source) at
> javax.swing.JComponent.processMouseEvent(Unknown Source) at
> java.awt.Component.processEvent(Unknown Source) at
> java.awt.Container.processEvent(Unknown Source) at
> java.awt.Component.dispatchEventImpl(Unknown Source) at
> java.awt.Container.dispatchEventImpl(Unknown Source) at
> java.awt.Component.dispatchEvent(Unknown Source) at
> java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at
> java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at
> java.awt.LightweightDispatcher.dispatchEvent(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$200(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)

спросил(а) 2013-10-16T05:11:00+04:00 7 лет назад
1
Решение
58

Вы объявили массив массива, но инициализируете его только в конструкторе, который не вызывается для вызова статического метода, объявите его так:

public static int[][] board = new int[10][10];

также, подумайте - во время статического вызова функции функции "setupGame" не вызывается, ожидалось ли?

ответил(а) 2013-10-16T05:20:00+04:00 7 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема