我设置如下静态类在另一个类中调用
State cur=new State ();
为什么会说我初始化错?(Exception in thread "main" java.lang.ExceptionInInitializerError)还要怎么给他初始化?
他还说是因为我数组越界导致( java.lang.ArrayIndexOutOfBoundsException: 8
at State.<clinit>(State.java:19)
... 2 more)
到底那里错????!!!!
public class State {
static int [][]a=new int[8][8];
static int [][]aa=new int[4][4];



static //静态初始化器,初始化静态属性
{
for(int i=0;i<8;i++)
for(int j=0;j<8;i++)
{a[i][j]=0;}
for(int i=0;i<4;i++)
for(int j=0;j<4;i++)
{aa[i][j]=0;}




}

public State(){ }
static void seta(int i,int j,int av)//修改静态属性
{
a[i][j]=av;
}
static void setaa(int i,int j,int av)//修改静态属性
{
aa[i][j]=av;
}
}

解决方案 »

  1.   

    你的两个for语句中的i改成j就可以了,如下:
    for(int i=0;i<8;i++)
    for(int j=0;j<8;j++)
    {a[i][j]=0;}
    for(int i=0;i<4;i++)
    for(int j=0;j<4;j++)
    {aa[i][j]=0;}
      

  2.   

    for(int j=0;j<8;i++) <---j
    for(int j=0;j<4;i++) <---j
      

  3.   

    哦打错哩明白那我在别的类里想调用,声明的是State cur=new State ();
    还要初始化么?可是他说是 java.lang.ExceptionInInitializerError
      

  4.   

    要是想在别的类中调用,因为是静态字段,所以并不需要使用State cur=new State ();语句创建对象,这么调用就行了,State.a[i][j]
      

  5.   

    它说的java.lang.ExceptionInInitializerError是你的静态字段初始化错,因为你错写了j,
    for(int j = 0; j < 8; i++),这里面的j永远都j<8,而i却在不断增加,所以导致数组越界,初始化错误了,改过之后,在别的类里调用State our = new State();就可以了.
      

  6.   

    第一个问题改过了,第二个是在别的类里调用了State cur=new State ();还会出现那个提示如果改成
     State.a[i][j]
      貌似也不成 
      

  7.   

    我在别的类里调用State cur=new State();没有出现你说的提示啊,看来帮不了你了,呵呵
      

  8.   

    State cur=new State ();要用英文符号的