我有两个班级是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;
}
答案 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();
}
}