0

我有三个类是Guest,Class和Fileprocessing。我必须选择合适的 RoomType 和最小的房间。例如Guest A [NOR,VIP]要预订的房型是NOR,如果我们不再是NOR房型,他们会选择VIP房。

在教室里:

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;

}

在类文件处理中:

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() 方法不循环所有来宾并且始终为真?

4

1 回答 1

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

它说:

  • 对于collection/iterable 中的每个this.resultThue客人:
    • 对于r 引用 的集合/迭代中的每个房间:this.resultInit
      • 对于s 引用的 每个字符串:k.getGuestRoomType()
        • 如果sr的房间类型匹配:
          • 我们返回到我们被调用的地方,其值为true

如果in 中的任何k.getGuestRoomType()与该迭代中的任何结果匹配,它将返回true. 这就是为什么,简而言之,你正在回归真实。

如果你根本没有循环,你会得到错误的回报。

于 2013-10-18T04:35:19.627 回答