java——创建引用数据类型二维数组
1、引用类型二维数组
创建方式:
元素数据类型[][] 数组变量名 = new 元素数据类型[行数][列数];
2、空指针异常错误
今天在学习二维数组中出现了空指针错误,以下为错误的代码:
class hotel{
//模拟酒店房间数组
Room[][] rooms = new Room[5][10];
//初始化房间
public hotel(){
for(int i = 0; i < rooms.length; i++) { //取每一行
for (int j = 0; j <rooms[i].length ; j++) { //取每每一列。这样就对应了每个房间
//为每个房间附上初始化属性
rooms[i][j].setNo(i + "" + j); //错误在此 未实例化对象
rooms[i][j].setState("空");
switch (i){
case 0:
rooms[i][j].setType("单人间");
case 1:
rooms[i][j].setType("双人间");
case 2:
rooms[i][j].setType("豪华间");
case 3:
rooms[i][j].setType("情趣房间");
case 4:
rooms[i][j].setType("总统套房");
}
}
}
}
}
class Room{
//房间编号
private String no;
//房间类型
private String type;
//房间状态(是否空闲)
private String state;
//构造方法
public Room() {
}
public Room(String no, String type, String state) {
this.no = no;
this.type = type;
this.state = state;
}
//set get方法
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
错误原因是创建了一个Room数据类型的二维数组,但未对其进行实例化,导致了空指针异常错误。下面为修改后代码:
class hotel{
//模拟酒店房间数组
Room[][] rooms = new Room[5][10];
//初始化房间
public hotel(){
for(int i = 0; i < rooms.length; i++) { //
for (int j = 0; j <rooms[i].length ; j++) { //
//为每个房间附上初始化属性
switch (i){
case 0:
rooms[i][j] = new Room(i + "" + j, "单人间", "空");
case 1:
rooms[i][j] = new Room(i + "" + j, "双人间","空");
case 2:
rooms[i][j] = new Room(i + "" + j, "豪华间", "空");
case 3:
rooms[i][j] = new Room(i + "" + j, "足浴", "空");
case 4:
rooms[i][j] = new Room(i + "" + j, "总统套房", "空");
}
}
}
}
}