我一直在研究2048的java版本,我发现程序中有错误。 我假设大家都知道2048年的游戏,所以我不会解释游戏的规则。 这是我遇到的代码的一部分,显示方法。 当我在添加导致问题的代码之前运行程序时,当数字高于1位数时,它为数字提供了额外的空间
0 0 0 0
0 0 0 0
0 32 0 0
0 2 0 0
它打破了董事会的秩序 所以我试图通过分别为3位,2位和1位数添加3个,2个或1个空格来修复它。 该方法的代码如下,请帮助我解决问题
-board是主要的游戏板 -sd是仅用于此方法的板,以帮助我处理空间事物。
`public static void Display (int[][] board) {
int x = 0;
int y = 0;
String sd[][] = new String [x][y];
if (board[x][y] == 0 ||board[x][y] == 2 || board[x][y] == 4 || board[x][y] == 8)
{ sd[0][y] = "board[0][y]" + " ";
y++; }
if (board[x][y] == 0 ||board[x][y] == 2 || board[x][y] == 4 || board[x][y] == 8)
{ sd[1][y] = "board[1][y]" + " ";
y++; }
if (board[x][y] == 0 ||board[x][y] == 2 || board[x][y] == 4 || board[x][y] == 8)
{ sd[2][y] = "board[2][y]" + " ";
y++; }
if (board[x][y] == 0 ||board[x][y] == 2 || board[x][y] == 4 || board[x][y] == 8)
{ sd[3][y] = "board[3][y]" + " ";
y++; }
System.out.println(sd[0][0] + " " + sd[0][1] + " " + sd[0][2] + " " + sd[0][3]);
System.out.println(sd[1][0] + " " + sd[1][1] + " " + sd[1][2] + " " + sd[1][3]);
System.out.println(sd[2][0] + " " + sd[2][1] + " " + sd[2][2] + " " + sd[2][3]);
System.out.println(sd[3][0] + " " + sd[3][1] + " " + sd[3][2] + " " + sd[3][3]);
System.out.println("--------");
}`
谢谢!
答案 0 :(得分:0)
我会做这样的事情。首先,添加以下两种方法。
public int getMaxDigits() {
int largestNumber = -1;
for(int i = 0; i < sd.length; i ++) {
for(int j = 0; i < sd[0].length; j ++) {
if(sd[i][j] > largestNumber) {
largestNumber = sd[i][j];
}
}
}
if(largestNumber > 999) {
return 4;
} else if(largestNumber > 99) {
return 3;
} else if(largestNumber > 9) {
return 2;
} else {
return 1;
}
}
public String getValue(int x, int y, int maxDigits) {
String value = "" + sd[x][y];
while(value.length() != maxDigits) {
value = " " + value;
}
return value;
}
其次,使用以上两种方法进行打印。如下所示:
int maxDigits = getMaxDigits();
System.out.println(getValue(0, 0, maxDigits) + " " + getValue(0, 1, maxDigits) + " " + getValue(0, 2, maxDigits) + " " + getValue(0, 3, maxDigits));
P.S:我只做了第一行。
干杯!