A hotel’s occupancy rate is calculated as follows: Occupancy rate = number of rooms occupied total number of rooms Write a program that calculates the occupancy rate for each fl oor of a hotel. The program should start by asking for the number of fl oors in the hotel. A loop should then iterate once for each fl oor. During each iteration, the loop should ask the user for the number of rooms on the fl oor and the number of them that are occupied. After all the iterations, the program should display the number of rooms the hotel has, the number of them that are occupied, the number that are vacant, and the occupancy rate for the hotel. Input Validation: Do not accept a value less than 1 for the number of floors. Do not accept a number less than 10 for the number of rooms on a floor.

**I believe I have the program done correctly, I just can't figure out how to get it not to accept a number less than 10 for the number of rooms on a floor.** Here is the code:

package hotel;

import java.util.Scanner;

public class Hotel {
public static void main(String[]args) {
int floors, occupiedRooms = 0, totalRooms = 0;

Scanner input = new Scanner(System.in);

System.out.print("How many floors are present: ");
floors = input.nextInt();

for(int i = 1; i <= floors; i++) {
System.out.print("Level " + i + ": How many rooms are there: ");
int totalRoomsOnLevel = input.nextInt();
System.out.print("Level " + i + ":How many are occupied: ");
int occupiedRoomsOnLevel = input.nextInt();
System.out.println();
totalRooms += totalRoomsOnLevel;
occupiedRooms += occupiedRoomsOnLevel;
}

System.out.println();
System.out.println("Total hotel rooms: " + totalRooms);
int vacantRooms = totalRooms - occupiedRooms;
System.out.println("Total vacant rooms: " + vacantRooms);

double occupancyRate = (double)occupiedRooms / totalRooms;
System.out.println("Occupancy rate: " + occupancyRate);
}
}

Your code looks carefully thought out.

For making sure there are 10 storeys or more, you can modify the input segment:

System.out.print("How many floors are present: ");
floors = input.nextInt();
while(floors<10){
// print Number of floors must be at least 10
floors = input.nextInt();
}

But this would continue indefinitely until user enters a number greater than 10.

A better way is to use a for-loop to loop a maximum (say 5) of times after which a message will appear and the program terminates.

I'm sorry. I think I was confusing. There can't be less than 1 for the number of floors, but has to be at least 10 for the number of rooms on a floor.

It would be along the same lines, just change floors to rooms, and for floors, change 10 to 1 for the number of floors.

I got it. Thanks so much. You're awesome.

You did most of the work, so you deserve the credit too!

I have this code. Is it correct?

floors=int(input("Enter number of floors in the hotel: "))
if floors>0:
s=0
total_rooms=[]
total_occupied=[]
for i in range(0,floors):
while(True):
rooms=int(input("Enter number of rooms on the floor: "))
if rooms <10:
print("Invalid Input : Numbers of Rooms entered less than 10")
else:
break


while(True):
occupied=int(input("Enter number of rooms that are occupied: "))
if occupied > rooms:
print("Invalid Input : occupied Rooms entered greater than Available Rooms")
else:
total_rooms.append(rooms)
total_occupied.append(occupied)
s=1
break

if s==1:
print("\t")
print("Total numbers of floors in the hotel: ",floors)
for i in range(0,len(total_rooms)):
print("Number of rooms on",i+1," floor: ",total_rooms[i])
print("Numbers of rooms occupied on",i+1," floor: ",total_occupied[i])
print("Number of rooms vacant on ",i+1," floor: ",total_rooms[i]-total_occupied[i])
rate=100*total_occupied[i] /total_rooms[i]
print("occupancy rate of ",i+1," floor: ",round(rate,2))
print("\t")


print("Total numbers of rooms in hotel: ",sum(total_rooms))
print(" Total numbers of rooms that are occupied: ",sum(total_occupied))
print("Numbers of rooms that are vacant: ",sum(total_rooms)- sum(total_occupied))
occupancy_rate=100* sum(total_occupied)/sum(total_rooms)
print("occupancy rate of hotel : ",round(occupancy_rate,2))
else:
print("Invalid Input")

To enforce the constraint that the number of rooms on a floor should not be less than 10, you can add a validation check within the for loop. Here's an updated version of your code:

```java
import java.util.Scanner;

public class Hotel {
public static void main(String[] args) {
int floors, occupiedRooms = 0, totalRooms = 0;

Scanner input = new Scanner(System.in);

System.out.print("How many floors are present: ");
floors = input.nextInt();

while (floors < 1) {
System.out.println("Invalid number of floors. Please enter a value greater than or equal to 1.");
System.out.print("How many floors are present: ");
floors = input.nextInt();
}

for (int i = 1; i <= floors; i++) {
int totalRoomsOnLevel = 0;
int occupiedRoomsOnLevel = 0;

do {
System.out.print("Level " + i + ": How many rooms are there (at least 10): ");
totalRoomsOnLevel = input.nextInt();
} while (totalRoomsOnLevel < 10);

do {
System.out.print("Level " + i + ": How many are occupied: ");
occupiedRoomsOnLevel = input.nextInt();
} while (occupiedRoomsOnLevel > totalRoomsOnLevel);

System.out.println();
totalRooms += totalRoomsOnLevel;
occupiedRooms += occupiedRoomsOnLevel;
}

System.out.println();
System.out.println("Total hotel rooms: " + totalRooms);
int vacantRooms = totalRooms - occupiedRooms;
System.out.println("Total vacant rooms: " + vacantRooms);

double occupancyRate = (double) occupiedRooms / totalRooms;
System.out.println("Occupancy rate: " + occupancyRate);
}
}
```

In this updated version, I've added do-while loops to prompt the user for the number of rooms on a floor and the number of occupied rooms, ensuring that the number of rooms is at least 10 and the number of occupied rooms is not greater than the total number of rooms on that floor.