有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过arraylist搜索时的java句柄关联

在我的作业中,我必须制定一个房间预订计划。有一个选项可以计算房间数量,并显示座位最多的房间。我想做的是,如果有两个房间的座位最多,则显示多个房间(平局)。我现在正在打印座位最多的房间,我只是对如何实现这些联系感到困惑

班级要找最大的房间

public static void roomCount(ArrayList<Room> rooms) {
    int largestRoom = 0;
    int largestNumOfRooms = 0;
    for (int i = 0; i < rooms.size(); i++) {
    if (rooms.get(i).getNumberOfSeats() > largestNumOfRooms) {//Determine largest room
            largestNumOfRooms = rooms.get(i).getNumberOfSeats();
            largestRoom = rooms.get(i).getRoomNumber();
        }
    }

客房类

     public class Room {
Scanner input = new Scanner(System.in);
private int roomNumber;
private int numberOfSeats;
private String reservedBy = "";
private boolean reserved;
private boolean hasSmartBoard;

/**
 * Get the attribute values from the user.
 */

public Room(int roomNumber) {
    this.roomNumber = roomNumber;

}


public void getRoomDetailsFromUser() {

    System.out.print("Enter number of seats: ");
    numberOfSeats = input.nextInt();
    input.nextLine();
    System.out.print("Does this classroom have a smart board? (Y/N)");
    hasSmartBoard = input.nextLine().equalsIgnoreCase("y");

}

public boolean isHasSmartBoard() {
    return hasSmartBoard;
}

public void setHasSmartBoard(boolean hasSmartBoard) {
    this.hasSmartBoard = hasSmartBoard;
}

public int getNumberOfSeats() {
    return numberOfSeats;
}

public void setNumberOfSeats(int numberOfSeats) {
    this.numberOfSeats = numberOfSeats;
}

public String getReservedBy() {
    return reservedBy;
}

public void setReservedBy(String reservedBy) {
    this.reservedBy = reservedBy;
}

public boolean isReserved() {
    return reserved;
}

public void setReserved(boolean reserved) {
    this.reserved = reserved;
}


public int getRoomNumber() {
    return roomNumber;
}

/**
 * Update the room to reserved and get the reserved by.
 */

public void reserveThisRoom(){
    this.reserved = true;
    System.out.println("Enter the name of the person reserving this room: ");
    reservedBy = input.nextLine();
}

 /**
 * Update the room to not reserved and clear the reserved by.
 */

public void releaseThisRoom(){
    this.reserved = false;
    reservedBy = "";
    System.out.println("Room has been released\n");


}

public String toString() {
    String output = "\n\n******************************"
            + "\nRoom Number: " + roomNumber
            + "\nNumber of Seats: " + numberOfSeats
            + "\nReserved By: " + reservedBy
            + "\nReserved: " + reserved
            + "\nSmart Board: "+ hasSmartBoard;
    return output;
}
}

共 (2) 个答案

  1. # 1 楼答案

    你可以用List来代替在int中存储最大的空间。所以你可以做以下几件事

    List<Integer> largestRoom = new ArrayList<Integer>();
    
        if (rooms.get(i).getNumberOfSeats() >= largestNumOfRooms) {//Determine largest room
            largestNumOfRooms = rooms.get(i).getNumberOfSeats();
            largestRoom.add(rooms.get(i).getRoomNumber());
        }
    

    还需要从该方法返回值

  2. # 2 楼答案

    房间号再做一次ArrayList。比如:

    List<Integer> largestRoom = new ArrayList<Integer>();
    if (rooms.get(i).getNumberOfSeats() > largestNumOfRooms) {
            largestNumOfRooms = rooms.get(i).getNumberOfSeats();
            largestRoom.clear();
            largestRoom.add(rooms.get(i).getRoomNumber());
    }else if(rooms.get(i).getNumberOfSeats()==largestNumOfRooms){
        largest.add(rooms.get(i).getRoomNumber())
    }
    

    现在,largestRoom有了您需要的房间号