java 2维数组 报错
来源:百度知道 编辑:UC知道 时间:2024/09/24 12:09:49
class Graphical_Interface{
....
Button[][] b;
...
public void go(){
b=new Button[8][21];
for(int i=0;i<8;i++)
for(int j=0;j<21;j++){
b[i][j].setVisible(false);
}//for
}//go
...
}//class
呃。。在定义Button时使用new分配空间,还是不行~~
你虽然定义button这个类型的数组了,但是数组里的东西还不是button,所以不能调用button的方法 应该在b[i][j].setVisible(false);前面声明再给b[i][i]赋下值,
public void go(){
b=new Button[8][21];
for(int i=0;i<8;i++)
for(int j=0;j<21;j++){
b[i][j] = new Button();
b[i][j].setVisible(false);
}//for
}//go
...
}//class
public void go(){
b=new Button[8][21];
for(int i=0;i<8;i++)
for(int j=0;j<21;j++){
b[i][j] = new Button();
b[i][j].setVisible(false);
}//for
}//go
...
}//class
LZ是不是认为new Button[8][21]创建了8*21个Button对象,其实不然,new Button[8][21]实际上仅仅是创建了一个为8*21长度的数组对象,注意是一个对象,不是8*21个Button对象,这个数组对象你可以把他看作是含有8*21个指向Button类型的引用变量的对象,为什么会抛出NullPointerException呢?这主要是因为java的变量初始化机制
class Graphical_Interface{
....
Button[][] b;
...
public void go(){
b=new Button[8][21];//这里你建立了一个长度为8*21的数组对象,对象含有8*21个Button引用变量,为了给这些变量一个初始状态,jvm会为这些