繁体   English   中英

字符串中的Java双数组错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM