在java中生成锯齿状数组,错误:';]';预期

在java中生成锯齿状数组,错误:';]';预期,java,arrays,string,Java,Arrays,String,我正在做一个Java入门课程的作业。根据Jgrasp的说法,Java确实希望看到一个],在这里我可以指定数组中的元素数量。以下是我的阵列代码: //makes an two dimensional global string array named "cal" to put events //in and populate a calendar program public static String[][] cal = new String[12][]; cal[0]=new String

我正在做一个Java入门课程的作业。根据Jgrasp的说法,Java确实希望看到一个
]
,在这里我可以指定数组中的元素数量。以下是我的阵列代码:

//makes an two dimensional global string array named "cal" to put events 
//in and populate a calendar program

public static String[][] cal = new String[12][];
cal[0]=new String[31]; 
cal[1]=new String[28];
cal[2]=new String[31];
cal[3]=new String[30]; 
cal[4]=new String[31];
cal[5]=new String[30]; 
cal[6]=new String[31]; 
cal[7]=new String[31];
cal[8]=new String[30]; 
cal[9]=new String[31]; 
cal[10]=new String[30];
cal[11]=new String[31];

根据我的课本,这是锯齿状数组的正确格式,但是Jgrasp说,方括号内的所有数字都是java期望的一个额外的紧括号。帮助?

因为您正在初始化任何
静态
块或方法体之外的
静态
成员

使用
static
块对其进行初始化

public static String[][] cal = new String[12][];
static
{
    cal [0]=new String[31]; 
    cal [1]=new String[28];
    cal [2]=new String[31];
    cal [3]=new String[30]; 
    cal [4]=new String[31];
    cal [5]=new String[30]; 
    cal [6]=new String[31]; 
    cal [7]=new String[31];
    cal [8]=new String[30]; 
    cal [9]=new String[31]; 
    cal [10]=new String[30];
    cal [11]=new String[31];
}

查看它的工作情况

静态成员无法在非静态范围(块或方法)内初始化。可以将字符串声明为非静态,并在非静态块中初始化

public String[][] cal = new String[12][];
{
    cal [0]=new String[31]; 
    cal [1]=new String[28];
    cal [2]=new String[31];
    cal [3]=new String[30]; 
    cal [4]=new String[31];
    cal [5]=new String[30]; 
    cal [6]=new String[31]; 
    cal [7]=new String[31];
    cal [8]=new String[30]; 
    cal [9]=new String[31]; 
    cal [10]=new String[30];
    cal [11]=new String[31];
}
或者可以在main方法或任何静态方法中初始化它

public static String[][] cal = new String[12][];
    public static void main(String args[]){
    cal [0]=new String[31]; 
    cal [1]=new String[28];
    cal [2]=new String[31];
    cal [3]=new String[30]; 
    cal [4]=new String[31];
    cal [5]=new String[30]; 
    cal [6]=new String[31]; 
    cal [7]=new String[31];
    cal [8]=new String[30]; 
    cal [9]=new String[31]; 
    cal [10]=new String[30];
    cal [11]=new String[31];
  }
或者可以在静态块中初始化它

 public static String[][] cal = new String[12][];
static
{
    cal [0]=new String[31]; 
    cal [1]=new String[28];
    cal [2]=new String[31];
    cal [3]=new String[30]; 
    cal [4]=new String[31];
    cal [5]=new String[30]; 
    cal [6]=new String[31]; 
    cal [7]=new String[31];
    cal [8]=new String[30]; 
    cal [9]=new String[31]; 
    cal [10]=new String[30];
    cal [11]=new String[31];
}

到底是什么问题?“java真的想看到一个“]]”是什么意思?你得到错误的行号是什么,那一行是什么代码?请向我们展示前面的代码,比如类声明和所有字段。在这段代码之前,你可能已经把代码弄乱了,编译器在这里死掉了,因为它无法找出前面的代码。在把你的错误发布到上面之前。请用谷歌搜索某物的确切语法。