日期:2014-05-20  浏览次数:20698 次

关于静态类,急·~~~~~~~~~~帮帮忙~~~~~~~~~~~~~~~~~~~~~在线等
我设置如下静态类

在另一个类中调用
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;
}
}


------解决方案--------------------
你的两个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;}
------解决方案--------------------
要是想在别的类中调用,因为是静态字段,所以并不需要使用State cur=new State ();语句创建对象,这么调用就行了,State.a[i][j]
------解决方案--------------------
State cur=new State ();要用英文符号的