null指针异常Java用绘图2D数组列表

时间:2014-03-12 05:58:30

标签: java pointers null

这可能是一个愚蠢的问题,但为什么我在这里得到一个空指针异常? 我正在尝试为java applet绘制一个tile map。我只是粘贴了问题区域。

private int[][] map;     
public void init()
{
   int map[][]={ {0,0,0},
                {1,1,0},
                {0,0,0} };

}
public void drawCaveTiles(Graphics g)
{
   for(int i = 0; i <= 3; i++)
   {
       for( int j = 0; j <= 3; j++)
       {
           if(map[i][j] == 1)
           {
               g.drawImage(snow_brick, i*64, j*64, this);
           }
           if(map[i][j] == 0)
           {
               g.drawImage(black, i*64, j*64, this);
           }  
       }
    }

}

我修好了

map =new int[][] { {0,0,0},
          {1,1,0},
          {0,0,0} };

3 个答案:

答案 0 :(得分:1)

  int map[][]={ {0,0,0},
                {1,1,0},
                {0,0,0} };

在方法init()中,您要创建一个新方法,该方法是方法init()的本地地图,而不是初始化实例成员map

将其更改为

   map ={ {0,0,0},
                {1,1,0},
                {0,0,0} };

并确保在调用inti()方法之前调用drawCaveTiles()方法。

或者因为它是静态数据。将该行移动到声明的位置。

答案 1 :(得分:1)

init()方法中,您隐藏了类字段map,因为您再次声明它(在方法init()的本地块中)。

另外,请确保调用init()方法。它应该在你的构造函数中调用:

public class YourApplet {
    public YourAppler() {
        init();
    }

    public void init()
    {
       map[][]={ {0,0,0},
                 {1,1,0},
                 {0,0,0} };
    }
}

答案 2 :(得分:1)

int map[][]中的局部变量init()正在影响您的实例变量private int[][] map;。不要在int map方法中创建新的本地init()。只需在init()方法中使用全局地图数组。

public void init() {
    map={ {0,0,0}, {1,1,0}, {0,0,0} };
}