1. ホーム
  2. java

2次元配列の初期化

2023-10-03 23:24:50

質問

2次元配列を初期化しようとしていますが、各要素の型は 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であれば、些細な方法だと思います。 何か効率的な方法はないでしょうか?

どのように解決するのですか?

このようなものはどうでしょうか。

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' ).

式は '1' + row * 3 + col (ここで rowcol の間に 02 を含む) から、単に文字を与えるだけです。 1 から 9 .

明らかに、これでは文字 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);