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

乾杯!