2013-10-16 42 views
0

我現在正在與一位朋友一起開展遊戲,並且通過在遊戲中實現保存功能,我遇到了一些問題。但每次我嘗試從數組中獲取特定值時,我總是收到NullPointerExceptions。java.lang.NullPointerException |嘗試從另一個班級數組中獲得價值

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) 
+0

'KodeKsData'中的597是什麼行? –

回答

1

您已宣佈董事會數組,b UT只能在構造函數,它不會調用靜態方法調用初始化它,聲明它想:

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

也考慮 - 在靜態函數調用方法「setupGame」不叫,難道是正常嗎?

+2

或者使用static初始化函數'static {board = new int [10] [10]; }' –

+0

@JeroenVannevel +1,這也可以 –