我正在从事一个分配工作,我正在尝试对用户进入房间时的例外,并且房间不存在或已保留。我对实际放置代码块的位置感到困惑,并感谢任何帮助。
房间课
public static int getRoomNumberIfExists(int roomNumber) throws RoomExistException{
int index = -1;
for (int i = 0; i < rooms.size(); i++) {
if (rooms.get(i).getRoomNumber() == roomNumber) {
index = i;
}
}
return index;
}
例外类
public class RoomExistException extends Exception {
public RoomExistException(String message){
super(message);
}
}
您有一个房间列表,或者至少是您在发布时让我们推断的内容:
rooms.get(i)
因此,在房间课中,您需要定义房间的方法
if (rooms.get(i).isRoomNumberReserved()) {
throw new RoomExistException("this room is already gone!");
这样做,您将永远无法抛出新的例外,因为它会到达外部。可能的解决方法是检查索引是否为-1,然后进行异常。更好的方法是直接在循环内部返回并在外面抛出异常。为此,您将必须编码布尔值非静态方法,该方法将检查是否不保留。
// in class Room
...
boolean available = true;
...
public boolean isAvailable()
{
return available;
}
最后,这里驻留新的静态方法。
public static int getRoomNumberIfExists(int roomNumber) throws RoomExistException
{
for (int i = 0; i < rooms.size(); i++)
{
Room room = rooms.get(i);
if (room.getRoomNumber() == roomNumber && room.isAvailable())
{
return i;
}
}
throw new RoomExistException();
}