-1

我有两个班级是房间和客人,我需要计算房间预订的客人数量以找到合适的房间。例如:客人 A 预订 5 人,但我们有三个房间:A1001 2 人,A1002 6 人,A1003 8 人。我们计算如下:|5-2|=3;|5-6|=1; |5-8|=3 => 我们选择房间 A1002,因为它收到了最小值。

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;

}

你能给我一个可以解决上述问题的想法吗?我不知道如何计算所有房间和结果。在Guest类中,我创建了方法:

public String RoomForGuest(){
        return this.room.Room_Guest();
    }

在教室里:

public String Room_Guest(Guest g) {     
        Math.abs(g.getGuestNum()-this.roomNumSeat);
//How can i calculate all roomNumSeat and compare the value received?
        return this.roomName;
    }
4

1 回答 1

1
import java.util.ArrayList;
import java.util.LinkedHashMap;

public class HotelRooms {

    LinkedHashMap<String, Room> roomMap = new LinkedHashMap<String, Room>();

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

        public Room(String roomName, String roomType, int roomSeat,
                int roomStatus) {
            this.roomName = roomName;
            this.roomType = roomType;
            this.roomNumSeat = roomSeat;
            this.status = roomStatus;
        }

    }

    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 Guest(String guestID, String guestName, double time,
                int guestNum, double bonus, ArrayList<String> guestServices,
                ArrayList<String> guestRoomType) {
            this.guestID = guestID;
            this.guestName = guestName;
            this.time = time;
            this.guestNum = guestNum;
            this.bonus = bonus;
            this.guestServices = guestServices;
            this.guestRoomType = guestRoomType;
        }

    }

    public void createRooms(String roomName, String roomType, int roomSeat,
            int roomStatus) {
        Room room = new Room(roomName, roomType, roomSeat, roomStatus);
        roomMap.put(roomName, room);
    }

    public String roomForGuest() {
        Guest g = new Guest("1234", "taki", 12.00, 2, 0, null, null);
        String roomName = this.getRoom(g);
        System.out.println(roomName);
        return roomName;
    }

    public String getRoom(Guest g) {
        Room roomObj = null;
        String roomName = "";
        int firstValue, previousValue = 0, count = 0;
        for (String key : roomMap.keySet()) {
            roomObj = roomMap.get(key);
            firstValue = roomObj.roomNumSeat - g.guestNum;
            if ((firstValue >= 0 && firstValue <= previousValue) || count == 0
                    || previousValue < 0)
                roomName = roomObj.roomName;
            previousValue = firstValue;
            count++;
        }
        return roomName;
    }

    public static void main(String[] args) {
        HotelRooms test = new HotelRooms();
        test.createRooms("A1001", "", 2, 0);
        test.createRooms("A1002", "", 6, 0);
        test.createRooms("A1003", "", 8, 0);
        test.roomForGuest();
    }

}
于 2013-10-14T07:22:07.630 回答