Java 2-D массив возвращает NULL - PullRequest
0 голосов
/ 01 октября 2018

Я работаю над созданием "базовой" игры с интерфейсом 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 голосов
/ 01 октября 2018

Я бы посоветовал вам пересмотреть этот код:

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

Вы должны сделать защитную копию этого 2D-массива внутри конструктора.

Любой код, который дал вам ссылку на 2D-массив игры, который передается конструктору, может изменить эту изменяемую ссылку.Ваше личное обозначение ничего не значит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...