如何计算所有值并比较每个对象?

时间:2013-10-14 06:41:59

标签: java

我有两个班级是Room and Guest,我需要计算一下客房预订的数量才能找到合适的房间。例如:客人预订5人但我们有三个房间:2人A1001,6人A1002和8人A1003。我们计算如下:| 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;
    }

1 个答案:

答案 0 :(得分: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();
    }

}