读书人

关于静态类#183;帮帮忙~

发布时间: 2012-02-04 15:43:09 作者: rapoo

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

在另一个类中调用
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 ();要用英文符号的

读书人网 >J2SE开发

热点推荐