在构造函数中创建数组与在main

时间:2018-07-22 01:04:08

标签: arrays constructor

如果我有一个叫做game的类和一个私有的:char board [3] [3],为什么不能用下面的方法初始化数组?

board[3][3]={'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' }

总的来说,我可以使用上述方法来初始化数组,但不能在我的课堂上吗?

for (int i=0;i<3;i++)
{
    for (int j=0; j<3; j++)
    {
        board[i][j]='a';
    }
}

1 个答案:

答案 0 :(得分:1)

用基本语言board[3][3]表示您正在创建2D数组,即数组的数组,因为编译器没有像2D数组这样的东西。编译器将其视为在1D数组的每个索引上都有另一个数组。因此,当您写board[3][3]={'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' }时会出现错误,因为
1.您正在初始化数组,但是char board[3][3]只是一个引用,因此不会分配大小为3的内存来分配它,您必须在Java中使用 new 关键字作为{{1 }}
2.您在声明2D数组,但未提及列值,因此,如果您要编写char board[][] = new char[3][3]{{'a','a','a'},{'a','a','a'}'{'a','a','a'}};,这也将是一个错误,因此,将每一行和列值分开,将它们放在board[][]={'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' }中即{'a','a','a'}