字符串中的Java双精度数组错误

时间:2014-03-30 23:04:47

标签: java arrays 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("--------");
}`

谢谢!

1 个答案:

答案 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:我只做了第一行。

干杯!