gpt4 book ai didi

java - 如何选择值(value)最小的房间?

转载 作者:行者123 更新时间:2023-11-30 04:11:49 25 4
gpt4 key购买 nike

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

在类文件处理中:

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 List<TenantInformation> RoomforGuest(){
for (Guest g: this.resultThue){
int min=999999;

TenantInformation tt = new TenantInformation();
for (Room r: this.resultInit){
if(g.getGuestNum()-k.getRoomSeat()<min){
min=Math.abs(g.getGuestNum()-r.getRoomSeat());
tt.setGuestName(g.getGuestName());
tt.setRoomName(r.getRoomName());
r.setRoomStatus(1);
resultttkt.add(tt);
break;
}
}
}
System.out.println(resultttkt);
return resultttkt;
}

但它不会选择值最小的房间,它只是选择一个房间来读取。

最佳答案

您现在正在做的是查看是否有任何房间的房间容量小于(999999),这对于所有房间来说很可能都是如此,然后您打破循环。因此,您将进入循环,查看找到的第一个房间符合条件,然后中断循环。使用此方法您将始终选择列表中的第一个房间。

您需要遍历所有房间,然后决定使用哪个房间。

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) {
min = Math.abs(g.getGuestNum() - r.getRoomSeat());
selectedRoom = r;
}
}

tt.setGuestName(g.getGuestName());
tt.setRoomName(selectedRoom.getRoomName());
selectedRoom.setRoomStatus(1);
resultttkt.add(tt);
}
}

我对您的代码做了一些其他小的更改。

  • Java 约定是使用驼峰式命名方法,而不是驼峰命名法(即第一个字母应该小)。
  • 不要使用魔数(Magic Number),为什么是 min=999999 而不是 min=99999?使用 Integer.MAX_VALUE 表示所有其他数字必须小于该数字。

另外,r.setRoomStatus(1); 是什么意思? 1是什么?不要使用魔数(Magic Number)——创建一个 enum或者在 Room 类上创建静态变量,例如final static int ROOM_OCCUPIED = 1 并使用 r.setRoomStatus(Room.ROOM_OCCUPIED); 代替。

关于java - 如何选择值(value)最小的房间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com