2013-10-18 15 views
0

我有三個類是Guest,Class和Fileprocessing。我必須選擇適當的RoomType和價值最小的房間。例如Guest A [NOR,VIP]想預定房間類型爲NOR,如果我們不再房間類型NOR,他們會選擇VIP房間。爲什麼我的CheckTypeRoomForGuest()方法不循環所有客人並始終如此?

在教室:

public class Room { 
    private String roomName; 
    private String roomType; 
    private int roomNumSeat; 
    private int status; 
    } 

類客戶:

public class Guest { 
    private String guestID; 
    private String guestName; 
    private double time; 
    private int guestNum; 
    private double bonus; 
    private ArrayList<String> guestServices= new ArrayList<String>(); 
    private ArrayList<String> guestRoomType= new ArrayList<String>(); 
    private Room room; 
    private Services services; 

} 

類Fileprocessing:

public class Fileprocessing { 

    List<Room> resultInit = new ArrayList<Room>(); 
    //List<Services> resultInit1 = new ArrayList<Services>(); 
    List<Guest> resultThue = new ArrayList<Guest>(); 
    List<TenantInformation> resultttkt= new ArrayList<TenantInformation>(); 


    public Fileprocessing(){} 


public boolean CheckTypeRoomForGuest() { 
     for (Guest g: this.resultThue) { 
      for (Room r : this.resultInit) { 
       for (String s : g.getGuestRoomType()) { 
        if (s.equals(r.getRoomType())) { 
         return true; 
        } 
       } 
      } 

     } 
     return false; 
    } 

    public List<TenantInformation> roomforGuest() { 
     for (Guest g: this.resultThue){ 
      int min = Integer.MAX_VALUE; 
      Room selectedRoom = null; 
      TenantInformation tt = new TenantInformation(); 
      for (Room r: this.resultInit) { 
       if((g.getGuestNum()-k.getRoomSeat() < min)&& (CheckTypeRoomForGuest())&& (r.getRoomStatus==0)) { 
        min = Math.abs(g.getGuestNum() - r.getRoomSeat()); 
        selectedRoom = r; 
       } 
      } 

      tt.setGuestName(g.getGuestName()); 
      tt.setRoomName(selectedRoom.getRoomName()); 
      r.setRoomStatus(Room.ROOM_OCCUPIED); 
      resultttkt.add(tt); 
     } 
    } 

爲什麼我CheckTypeRoomForGuest()貪利不循環播放所有的客人,總是真正?

+1

你在你的增強for循環中缺少某種變量 - 我會假設你打算在那裏放一個「g」。 – Makoto

回答

0

讓我們想想這個方法是說:

public boolean CheckTypeRoomForGuest() { 
    for (Guest g: this.resultThue) { 
     for (Room r : this.resultInit) { 
      for (String s : k.getGuestRoomType()) { 
       if (s.equals(r.getRoomType())) { 
        return true; 
       } 
      } 
     } 

    } 
    return false; 
} 

它說:

  • 對於每個客人在收集/迭代this.resultThue
    • 對於每個房在由r:引用的集合/可迭代this.resultInit
      • 對於包含在s引用k.getGuestRoomType()每個字符串:
        • 如果s匹配一樣r的房間類型:
          • 我們回到我們在那裏調用的true值。

如果k.getGuestRoomType()比賽內的迭代任何結果的任何值,它將返回true。這就是爲什麼,在堅果殼裏,你迴歸真實。

如果你根本沒有循環,那麼你會錯過回頭。

+0

對不起,我是翻譯成英文的錯誤 – taki

相關問題