如果我有一个叫做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';
}
}
答案 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'}
。