因此,有一个类Hotel
,它包含20个房间,形式为矩阵4x5(4层,每层5个房间)。该类Room
具有的属性:for循环外的变量范围内的故障
floorNumber(int),
roomNumber(int),
numberOfBeds(int),
occupation(boolean)
etc.
对于occupation
,真正意味着忙碌,false意味着免费。
一个我在酒店实现的方法是,包房
reserve(int floorNumber, int roomNumber)
此方法应检查职业是真或假的一个。
如果这是真的,那么保留失败,如果是假的,我应该设置职业为true,则与方法
setOccupation(boolean t).
此外,方法reserve
返回布尔(true或false),这取决于预订是否成功或不。 在这种方法中,你猜测,是一个变量范围的问题。 所以有它是:
public boolean reserve(int floorNumber, int roomNumber){
boolean flag = false;
for (int i = 0; i < 5; i++){
if(rooms[floorNumber][i].getRoomNumber() == roomNumber){//every element in matrix rooms has this property: rooms[floorNumber][some_number_from_1_to_5]
if (rooms[floorNumber][i].getOccupancy() == false){
rooms[floorNumber][i].setOccupancy(true);
flag = true;
}
else
flag = false;
}
}
return flag;
}
的问题是,当我设置(在第一行)标志设置为true,函数返回true,而当我设标志设置为false,函数返回false。
我之所以要一些值分配给在第一行标志,是因为编译器显示:
Error: variable flag might not have been initialized
所以,问题是,它好像方法从不与循环执行代码。
我知道在循环中定义的变量不存在于循环外部,但在外部定义的变量应该在循环中更改它们的值。 像这个问题在这里: Java - Access variable inside and outside of for-loop
你的代码不能编译。'boolean flag false;'无效。修复该声明并重新编译。 –
对不起,我编辑了queston,现在编译。最初,它说'boolean flag = false;' – misty
为什么你在这里做一个循环呢?它是一个4 x 5阵列。你知道楼层和房间号码(例如2,3)。直接从房间阵列中获取房间(例如,Room room = rooms [2] [3])。 – KevinO