gpt4 book ai didi

java - 更改 ArrayList 中对象的字段,然后在下一次迭代中跳过该对象

转载 作者:行者123 更新时间:2023-12-02 11:25:34 25 4
gpt4 key购买 nike

如果您不想阅读所有内容,我的问题是:如何更改 ArrayList 中对象的字段,然后在循环返回以更改 ArrayList 的对象时跳过该对象相同类型?

好吧,我有一个抽象基类,有 4 个派生类。基类有一个 isVacant boolean 值。我有一个基类类型的数组列表:

    ArrayList<HotelRoom> hotelRooms = new ArrayList<>(20);

我获取了有关他们想要预订的房间类型的用户输入 1-4。在他们输入 1-4 后,我确定一个函数来调用要预订的房间。我的问题是,如果我尝试预订多个相同类型的房间,它只会将该类型的其中一个房间设置为空置。因此,如果我尝试预订 3 个相同类型的房间,它只会预订一间。

  while (hotel.getVacantAmount() > 0) {
int input = getInput();
bookType(input, hotel);
System.out.println("Amount of rooms the hotel has that are vacant: "
+ hotel.getVacantAmount());
}


public static void bookType(int input, Hotel h) {
Hotel hotel = h;
if (input == 1) {
hotel.bookDoubleHotelRoom();
} else if (input == 2) {
hotel.bookDoubleSuiteHotelRoom();
} else if (input == 3) {
hotel.bookKingHotelRoom();
} else if (input == 4) {
hotel.bookKingSuiteHotelRoom();
}
}

这是我遇到困难的功能。它找到一个相同类型的房间并检查其是否空闲,并将其设置为空闲。但在第一个之后,它就停止了。如果我删除中断,则会将该类型的所有房间空缺设置为 false。基本上是一个或全部。

 public double bookDoubleHotelRoom() {
DoubleHotelRooms doubleRoom = new DoubleHotelRooms();
for (HotelRoom rooms : hotelRooms) {
if (rooms.getRoomType() == doubleRoom.getRoomType() &&
doubleRoom.isVacant() == true) {
rooms.setIsVacant(false);
break;
}
}
return doubleRoom.getAverageNightlyPrice();
}

我试图制作另一个类似的程序,虽然有点简单,但遇到了一些困难。抱歉,如果我的措辞很奇怪,我会尽力而为。

这是程序的输出: https://pastebin.com/MktyQ7KY

最佳答案

您在 bookDoubleHotelRoom 函数的开头创建了一个双人房。然后你检查那个房间是否是空的,我猜你将一个房间初始化为空。

您应该检查 rooms.isVacant()。

此外,也不需要有 getRoomType 字段。您可以检查对象是什么类型的类。 Determine if two Java objects are of the same class

关于java - 更改 ArrayList 中对象的字段,然后在下一次迭代中跳过该对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658804/

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