There were a few things that were iffy about this, although I'll highlight the big ones.
The while loops were terminated with a ; when they shouldn't have been, which took a bit for me to spot honestly, and it was making everything else not make any sense at all, causing strange issues all over the place.
The rooms variable had the wrong scope, so once you set it the first time, it was not acting correct any other time after the first time.
Sticking with DRY (Don't Repeat Yourself), I've cleaned up the code a bit so it will always go in to the while loop at least once, and only make the correction message if the data entered is not correct.
Fixed code, tested and working:
import java.util.Scanner;
public class HotelOccupancy
{
public static void main(String[] args)
{
final int MIN_FLOORS = 2;
final int MIN_ROOMS = 11;
int floors = 0;
double totalrooms;
int occupied;
int vacant;
Scanner keyboard = new Scanner(System.in);
while (floors < MIN_FLOORS)
{
System.out.print("Enter the number of floors the hotel has: ");
floors = keyboard.nextInt();
if (floors < MIN_FLOORS)
{
System.out.println("You should have at least " + MIN_FLOORS + " for the hotel.");
}
}
int i;
for (i = 1; i <= floors; i++)
{
int rooms = 0;
while (rooms < MIN_ROOMS)
{
System.out.print("Enter the number of rooms on floor " + i + ": ");
rooms = keyboard.nextInt();
if (rooms < MIN_ROOMS)
{
System.out.println("You should have at least " + MIN_ROOMS + " for each floor");
}
}
}
}
}