我正在努力创建一个“基本” 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);
}
}
答案 0 :(得分:0)
我建议您重新考虑以下代码:
public class Connect4{
private String game[][];
public Conncet4(String game[][]){
this.game = game;
}
}
您应该在构造函数中为该2D数组制作一份防御性副本。
任何给您提供对传递给构造函数的游戏2D数组的引用的代码,都可以修改该可变引用。您的私人身份毫无意义。