初始化2D数组

Jus*_*tin 65 java multidimensional-array

我正在尝试初始化一个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';
}
}
Run Code Online (Sandbox Code Playgroud)

我想如果阵列是10*10,那就是琐碎的方式.有没有有效的方法呢?

Bhe*_*ung 232

更短的方法是这样做:

private char[][] table = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
Run Code Online (Sandbox Code Playgroud)

  • 注意:完成答案时,在引用表[i] [j]时:i指的是第一个数组级别,j指的是第二个级别,基于零...例如在当前示例表[2] [0]中指的是'7 " (3认同)
  • 固定它.它已在声明中声明. (2认同)

pax*_*blo 26

这样的事情怎么样:

for (int row = 0; row < 3; row ++)
    for (int col = 0; col < 3; col++)
        table[row][col] = (char) ('1' + row * 3 + col);
Run Code Online (Sandbox Code Playgroud)

以下完整的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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

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

表达式'1' + row * 3 + col(你变化rowcol之间02包括)简单地让你从一个字符19.

显然,如果你走得更远,这不会给你角色10(因为那是两个角色),但它适用于3x3的情况.您必须在此时更改生成数组内容的方法,例如:

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);
Run Code Online (Sandbox Code Playgroud)


goa*_*oat 15

易于阅读/打字.

  table = new char[][] {
      "0123456789".toCharArray()
    , "abcdefghij".toCharArray()
  };
Run Code Online (Sandbox Code Playgroud)


dch*_*tri 6

如果你真的想要,可以使用for循环.

char table[][] table = new char[row][col];
for(int i = 0; i < row * col ; ++i){
     table[i/row][i % col] = char('a' + (i+1));
}
Run Code Online (Sandbox Code Playgroud)

或者做什么bhesh说.