在Java中构造锯齿状数组并遇到两个相互矛盾的错误

在Java中构造锯齿状数组并遇到两个相互矛盾的错误,java,arrays,jagged-arrays,Java,Arrays,Jagged Arrays,你好,我是一个noob程序员,我使用BlueJ作为我的IDE。 这是我构造数组的代码 public class letters { char[][] colors = new char[3][]; colors[0] = new char[3]; colors[1] = new char[9]; colors[2] = new char[3]; public letters() { } public char getCharacter(int x, int y) {

你好,我是一个noob程序员,我使用BlueJ作为我的IDE。 这是我构造数组的代码

public class letters
{
char[][] colors = new char[3][];
    colors[0] = new char[3];
    colors[1] = new char[9];
    colors[2] = new char[3];

public letters()
{

}

public char getCharacter(int x, int y)
{
    return this.colors[x][y];
}
}

数组是在我的类中的任何方法之外构造的。 但是,我不断收到一个错误,说编译器希望在0所在的位置有一个“]”,但当我删除0时,它会抱怨有一个“缺少的标识符”

所以我想知道,我的编译器所说的“缺少标识符”是什么意思,以及如何使我的交错数组工作

声明在任何方法之外

这里只有一个声明——第一行。这三个赋值是可执行代码,而不是声明

类的声明部分禁止赋值和其他可执行代码。所有可执行语句必须是方法或初始值设定项的一部分,即

char[][] colors = new char[3][];

{   // Initializer code
    colors[0] = new char[3];
    colors[1] = new char[9];
    colors[2] = new char[3];
}
更好的方法是,在声明本身中包含初始化:

char[][] colors = new char[][] {
    new char[3]
,   new char[9]
,   new char[3]
};

我猜你也在任何方法之外赋值?e、 g.
colors[0]=新字符[3]你的代码是的,声明在任何方法之外。是不是BlueJ无缘无故地抱怨(它以前曾经这样做过)“是不是BlueJ无缘无故地抱怨”:除非你的配置完全混乱,否则不是。试着复制你的源代码,然后将其缩减为一个尽可能小的程序,这样仍然会产生错误。那就发吧。谢谢@dasblinkenlight。