2015-04-14 2 views
0

NetBeans не разрешит мне запускать мою программу из-за проблемы, связанной с публичным классом HotelManagement и публичным классом Room. Может ли кто-нибудь помочь мне исправить эту проблему, чтобы моя программа работала плавно. БлагодаряСправка по классам, предметам и методам Java

public class HotelManagement { 

    public static void main(String[] args) { 
     Room room1 = new Room(3348, 80, "Single Bed"); 
     Room room2 = new Room(3347, 90, "Double Bed"); 
     Room room3 = new Room(3346, 140, "Suite"); 
     room1.Book(); 
     room2.printRoomInfo(); 
     room3.setRate(180); 
     room1.Release(); 
     room1.printRoomInfo(); 
     room3.printRoomInfo(); 
    } 

    } 



    public class Room { 


    private final int number; 
    private final String type; 
    private int rate; 
    private boolean isBooked; 


    public Room(int number, int rate, String type) { 

     this.number = number; 
     this.type = type; 
     this.rate = rate; 
     this.isBooked = false; 
    } 


    public void Book() { 
     System.out.println("Room " + this.number + " has successfully been booked."); 
     this.isBooked = true; 
    } 

    // This method "releases" the booking on the room by setting the instance variable isBooked to false 
    public void Release() { 
     System.out.println("Room " + this.number + " has successfully been released."); 
     this.isBooked = false; 
    } 

    // Print basic info about the current Room objects state 
    public void printRoomInfo() { 
     String state; 
     if (this.isBooked == true) { 
      state = "Unavailable"; 
     } 

     else { 
      state = "Available"; 
     } 

     System.out.println("Room " + this.number + " is a " + this.type + ". Rate is: " + this.rate + "$ per night. " + state + "."); 

    } 


    public void setRate(int newRate) { 
     this.rate = newRate; 
    } 
    } 
+1

Ваша программа работает отлично для меня, вы поместили весь код в один файл? –

+0

Yup, это один класс верхнего уровня для каждого файла. –

+1

@RobertMoskal В файле может быть только один «общедоступный» класс. Поэтому вы должны либо сделать все классы, кроме «HotelManagement» непубличными, либо следовать приведенному ниже ответу. – Prudhvi

ответ

0

, если вы хотите поместить оба класса в один файл вам нужно:

  1. шаг номер объявления класса внутри класса Hotelmanagement
  2. сделать его статическим, как public static class Room {

так , окончательная структура будет такой:

public class HotelManagement { 
    public static void main(String[] args) { 
... 
    } 

    public static class Room { 
.... 
    } 
} 
0

У вас может быть только один открытый класс в .java файле, который будет классом, который имеет общедоступный static void main. Другие классы, если в одном файле не могут быть общедоступными.

public class HotelManagement { 

    public static void main(String[] args) { 
     Room room1 = new Room(3348, 80, "Single Bed"); 
     Room room2 = new Room(3347, 90, "Double Bed"); 
     Room room3 = new Room(3346, 140, "Suite"); 
     room1.Book(); 
     room2.printRoomInfo(); 
     room3.setRate(180); 
     room1.Release(); 
     room1.printRoomInfo(); 
     room3.printRoomInfo(); 
    } 

    } 



    class Room { 


    private final int number; 
    private final String type; 
    private int rate; 
    private boolean isBooked; 


    public Room(int number, int rate, String type) { 

     this.number = number; 
     this.type = type; 
     this.rate = rate; 
     this.isBooked = false; 
    } 


    public void Book() { 
     System.out.println("Room " + this.number + " has successfully been booked."); 
     this.isBooked = true; 
    } 

    // This method "releases" the booking on the room by setting the instance variable isBooked to false 
    public void Release() { 
     System.out.println("Room " + this.number + " has successfully been released."); 
     this.isBooked = false; 
    } 

    // Print basic info about the current Room objects state 
    public void printRoomInfo() { 
     String state; 
     if (this.isBooked == true) { 
      state = "Unavailable"; 
     } 

     else { 
      state = "Available"; 
     } 

     System.out.println("Room " + this.number + " is a " + this.type + ". Rate is: " + this.rate + "$ per night. " + state + "."); 

    } 


    public void setRate(int newRate) { 
     this.rate = newRate; 
    } 
    } 
0

У вас может быть только один открытый класс для исходного файла. Поэтому, чтобы заставить ваш код работать, вам нужно сделать одну из вещей:

  1. Поместите каждый открытый класс в отдельный исходный файл. Доступ к общедоступным классам возможен из любого места, независимо от пакета.
  2. Удалить public модификатор доступа для класса Room

Другой способ это сделать класс Room статические и поместить его внутри класса HotelManagement. Но я рекомендую вам узнать о передовых концепциях, таких как статические вложенные классы и внутренние классы в Java, когда вы очень хорошо разбираетесь в базовых концепциях.

Смежные вопросы