Java 2-D数组返回NULL

时间:2018-10-01 15:42:37

标签: java arrays null return

我正在努力创建一个“基本” UI connect4游戏。我很难弄清楚为什么当我打电话打印“木板”时,我得到的是空值。我不初始化数组吗?如果是这样,我该怎么做? 〜谢谢

我的构造函数...

public class Connect4{ 
    private String game[][];
    public Conncet4(String game[][]){
         this.game = game;
    }

使用我的一种方法...

public void dropChipX(int colm){    
    for(int i = 0; i<game.length;i++) {
        for(int j = 0; j<game[0].length;j++) {
            if( j%2 == 0 )
                game[game.length-1][col] = "|";
            else
                game[i][j] = " ";
        }
    }

    if(game[game.length-1][colm] == " ")
        game[game.length-1][colm] = "X";
    else
        game[(game.length-1)-count][col] = "X";
    count++;

}

我还有一个toString可以打印出数组

public String toString() {
    String result = "";
    for(int i = 0; i<game.length;i++) {
        for(int j = 0; j<game[0].length;j++)
            result = (game[i][j]);
        result += "\n";
    }
    return result;
}

我遇到的麻烦是,当我运行我的main时,它返回null

public class Connect4TextConsole {

public static void main(String[] args) {

    String fun[][] = new String[6][15];
    Connect4 connect = new Connect4(fun);

    connect.dropChipX(3);
    System.out.print(connect);
    connect.dropChipY(2);
    System.out.print(connect);
}

}

1 个答案:

答案 0 :(得分:0)

我建议您重新考虑以下代码:

public class Connect4{ 
    private String game[][];
    public Conncet4(String game[][]){
         this.game = game;
    }
}

您应该在构造函数中为该2D数组制作一份防御性副本。

任何给您提供对传递给构造函数的游戏2D数组的引用的代码,都可以修改该可变引用。您的私人身份毫无意义。