初始化 2D 数组

2022-08-31 12:57:30

我正在尝试初始化一个2D数组,其中每个元素的类型都是char。到目前为止,我只能按照以下方式初始化此数组。

public class ticTacToe 
{
private char[][] table;

public ticTacToe()
{
    table[0][0] = '1';
    table[0][1] = '2';
    table[0][2] = '3';
    table[1][0] = '4';
    table[1][1] = '5';
    table[1][2] = '6';
    table[2][0] = '7';
    table[2][1] = '8';
    table[2][2] = '9';
}
}

我认为如果数组是10 * 10,这是微不足道的方式。有什么有效的方法可以做到这一点吗?


答案 1

较短的方法是按如下方式进行:

private char[][] table = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};

答案 2

像这样的东西怎么样:

for (int row = 0; row < 3; row ++)
    for (int col = 0; col < 3; col++)
        table[row][col] = (char) ('1' + row * 3 + col);

以下完整的 Java 程序:

class Test {
    public static void main(String[] args) {
        char[][] table = new char[3][3];
        for (int row = 0; row < 3; row ++)
            for (int col = 0; col < 3; col++)
                table[row][col] = (char) ('1' + row * 3 + col);

        for (int row = 0; row < 3; row ++)
            for (int col = 0; col < 3; col++)
                System.out.println (table[row][col]);
    }
}

输出:

1
2
3
4
5
6
7
8
9

这是有效的,因为 Unicode 中的数字是从 \u0030 开始连续的(这是您从 中获得的)。'0'

表达式(在表达式之间变化,在和包含之间变化)只是为您提供一个字符 from 到 。'1' + row * 3 + colrowcol0219

显然,如果您更进一步,这不会给您角色(因为这是个字符),但它适用于3x3情况。此时,您必须更改生成数组内容的方法,例如使用如下方法:10

String[][] table = new String[5][5];
for (int row = 0; row < 5; row ++)
    for (int col = 0; col < 5; col++)
        table[row][col] = String.format("%d", row * 5 + col + 1);

推荐