用java显示二维数组



我有一个x乘y的数字板,存储在java的二维数组中,我想以一种格式良好的方式打印给用户。在java中有没有一种简单的方法可以做到这一点?

以下是我如何构建我的董事会:

board = new int[TotRow][TotCol];

您可能更喜欢这一行,因为它很简单,Javadoc说Arrays.deepToString(Object[])(部分(,

此方法是为将多维数组转换为字符串而设计的。

System.out.println(Arrays.deepToString(board));

如果您想正确填充数字,也可以使用String.format()

for (int i = 0; i < TotRow; i++) {
    for (int j = 0; j < TotCol; j++) {
        System.out.print(String.format("%3d", board[i][j]) + "t");
    }
    System.out.println();
}

注意,我使用了%3d进行格式化,您可以根据的需要使用格式

您可以像这个一样打印board two dimensional阵列

for (int i = 0; i < board.length; i++) {
    for (int j = 0; j < board[i].length; j++) {
        System.out.print(board[i][j] + "t");
    }
    System.out.println();
}

由于我不喜欢依赖制表符,我想提到一些不依赖制表符的方法。

如果你知道表中的所有数字都是4位数或更少的非负数字,你可以用类似于Nitin答案的方式使用String.format

for (int i = 0; i < TotRow; i++) {
    for (int j = 0; j < TotCol; j++) {
        System.out.print(String.format("%4d ", board[i][j]));
    }
    System.out.println();
}

%4d的意思是使用4个字符的宽度来格式化数字,如果打印数字所需的字符少于4个,则在左侧用空格填充。因此,如果没有任何5位数或更长的数字,则每个print将精确打印5个字符——一个4字符的数字字段,以及数字后面的空格。只要没有一个数字太大,这将使所有的东西都排成一行。如果你得到的数字超过4个字符,格式就会混乱。

这里有一种调整列宽的方法,使其足够大,可以容纳表中的所有值,并且如果有负数,也可以正常工作:

int maxWidth = 0;
for (int i = 0; i < TotRow; i++) {
    for (int j = 0; j < TotCol; j++) {
        maxWidth = Math.max(maxWidth, Integer.toString(board[i][j]).length());
    }
}
String format = "%" + maxWidth + "d ";
for (int i = 0; i < TotRow; i++) {
    for (int j = 0; j < TotCol; j++) {
        System.out.print(String.format(format, board[i][j]));
    }
    System.out.println();
}

注意:未测试

for (int i = 0; i < x; i++) {
    for (int j = 0; j < y; j++) {
        System.out.print(board[i][j] + "t");
    }
    System.out.println();
}

基本上只使用嵌套循环。

for (int i = 0; i < board.length; i++) {
    for (int j = 0; j < board[i].length; j++) {
        System.out.print(board[i][j] + " ");
    }
    System.out.println();
}

最新更新