2017-04-20 17 views
-1

我正在處理任務,並且我試圖在用戶進入房間時拋出異常,並且房間不存在或已被預留。我很困惑在哪裏實際上把代碼塊和任何幫助將不勝感激。如果房間不存在或已經預訂,則拋出異常

房類

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; 
} 

Exception類

public class RoomExistException extends Exception { 

public RoomExistException(String message){ 
    super(message); 
} 
} 
+0

當您確定房間不存在或保留時拋出'RoomExistsException'。你可以通過循環後檢查'index'來實現這一點。 IFF。 'index == -1',然後拋出異常,否則返回'index'。 – Turing85

回答

0

做這樣的說法,你將永遠無法拋出一個新的異常,因爲它會到達外部。可能的解決方法是檢查索引是否爲-1,然後拋出異常。更好的方法是直接在循環內部使用return並將Exception拋出。 要做到這一點,你將不得不編碼一個布爾型非靜態isAvailable方法,它將檢查它是否保留。

// 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(); 
} 
0

你有房的名單,或者至少是你讓什麼我們推斷,當你後:

rooms.get(i) 

所以在房類,你需要定義如果尚未爲的方法房間

if (rooms.get(i).isRoomNumberReserved()) { 
    throw new RoomExistException("this room is already gone!"); 
相關問題