java—返回带有if语句的2d数组时返回null

8e2ybdfx  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(282)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
什么是nullpointerexception,如何修复它(12个答案)
18天前关门了。
我正在尝试绘制一个基于2d数组的游戏网格图,并希望它根据变量进行更改。这就是我所拥有的(我在原始if下面有更多的else if语句,但即使这样它也返回null:

public class Game {

Maps maps = new Maps();

public int[][] createArea() {

    if (background.equals("Fighter")) {
            System.out.println("yep");
        int carea[][] = new int[maps.map2.length][maps.map2[0].length];
        for(int i=0; i < maps.map2.length; i++) {
          for(int j=0; j<maps.map2[i].length; j++)
              carea[i][j] = maps.map1[i][j];
            }
        return carea;
        }
    else {
        return null;
    }
}

Map类:

public class Maps {

    int[][] map2 =
{
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
      };        
}

当它尝试绘制时,在drawing类中给出一个nullpointerexception,表示startarea()的返回值为null。“if(background==”fighter“)”条件肯定满足了,因为“yep”行被打印出来,当我去掉if/else时,它画得很好。
我也会发布绘图类的情况下,这看起来不错,但我认为问题是什么,我已经张贴。我对编程非常陌生,所以我觉得我缺少一些基本的东西。

w46czmvw

w46czmvw1#

我有预感这和你的背景fighter if语句有关,你在哪里分配fighter变量
-将返回值改为null,并改为打印2d数组以尝试定位问题所在!

相关问题