2014-03-30 48 views
0

我一直在研究2048年的java版本,并且发现程序中有错误。 我假设每个人都知道2048年的比赛,所以我不会解释比赛的规则。 这是我遇到问题的代码的一部分,显示方法。 当我补充说,导致问题的代码之前运行程序,当数有高于1个位数它给了一个额外的空间来数字符串中的Java Double Array错误

0 0 0 0 
0 0 0 0 
0 32 0 0 
0 2 0 0 

,并一度冲破板 所以我的订单试图通过分别向3,2和1位数字添加3,2或1个空格来修复它。 该方法的代码如下,请帮助我的问题

-板是主游戏板 -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

我会做这样的事情。首先,添加以下两种方法。

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

干杯!