2017-04-05 12 views
0

在我的作业中,我必须做一个房间预订程序。有一个选项可以计算房间的数量,并显示最多座位的房间。我试图做的是显示多个房间,如果有两个房间的座位最多(领带)。我现在正在打印最多座位的房间,我只是对如何实现这些关系感到困惑。在通过数据列表搜索时处理领带

类找到最大的房间

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; 
} 
} 

回答

0

,而不是在int存储largestRoom您可以使用List为的。所以你可以做以下事情

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()); 
    } 

你也需要从这个方法返回值。

+0

当我使用,我得到一个错误,说int不能被推定 –

+0

抱歉coulldn't理解你的评论。你有没有把最大的房间改成ArrayList ? – stinepike

+0

我在哪里将最大的房间更改为ArrayList ? –

0

创建另一个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房间号码需要。

+0

每当我运行此代码,它只打印出最新的房间,它会看到有一个领带,但它只显示最近输入的房间遇到一条领带 –