[英]Java Double Array Error in String
我一直在使用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("--------");
}`
谢谢!!
我会做这样的事情。 首先,添加以下两种方法。
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));
PS:我只做第一行。
干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.