2016-03-05 5 views
0

Ниже я создал программу гостиницы, которая позволяет клиентам оставаться в номерах. Недавно мне удалось создать функцию, которая просматривает все текущие комнаты моей программы, однако у меня возникли проблемы с написанием правильного кода до . Добавьте клиента в функцию addCustomer(). Вот мой текущий код:Программа отеля - Добавить клиента

package hotelprogram; 

import java.util.Scanner; 

public class HotelProgram { 

// global variables 

static String[] hotel = new String[7]; 

private static void initialise(String hotelRef[]) { 

    for (int x = 0; x < 6; x++) { 
     hotelRef[x] = "e"; 
     System.out.println("initilise"); 
    } 
} 

private static void viewALL() { 

    // Views all current rooms 

    for (int x = 0; x < 6; x++) { 
     if (!hotel[x].equals("e")) { 
      System.out.println("Room " + x + " occupied by " + hotel[x]); 
     }else{ 
      System.out.println("Room" + x + " is Empty"); 
     } 
    } 
} 

private static void addCustomer() 
{ 
    // Add a customer 

    Scanner sc = new Scanner (System.in); 

    int roomNumfc; 
    int roomNamefc; 

    for (int x = 0; x < 6; x++) 
    { 
     System.out.println("Select room number to add a customer: "); 
     roomNumfc = sc.nextInt(); 
     System.out.println("New customer to add: "); 
     roomNamefc = sc.nextInt(); 

    } 


} 


public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    String roomName; 
    int roomNum = 0; 
    char selectChoice; 

    for (int x = 0; x < 6; x++) { 
     hotel[x] = ""; 
     initialise(hotel); 
    } 

    while (roomNum < 6) { 
     // Displays current rooms 

     for (int x = 0; x < 6; x++) { 

      // displays an empty room 

      if (hotel[x].equals("e")) { 
       System.out.println("Room" + x + " is Empty"); 
      } 
     } 
     // Enter a room prompt 

     System.out.println("Enter a room number from (0-5) or higher to stop (10 to display menu): "); 
     roomNum = input.nextInt(); 

     if (roomNum == 10) { 

      // menu if roomNum = 10 

      System.out.println("Make a selection: "); 
      System.out.println("A. Add a customer to room"); 
      System.out.println("V. View all rooms"); 
      selectChoice = input.next().charAt(0); 

      switch (selectChoice) { 
      case 'A': 
       addCustomer(); 
       break; 
      case 'V': 
       viewALL(); 
       break; 
      default: 
       System.out.println("Bad input, exiting program..."); 
       break; 
      } 
      break; 
     } 
     // Name current room promt 

     System.out.println("Please name this room: " + roomNum + " :"); 
     roomName = input.next(); 
     hotel[roomNum] = roomName; 

     // Room displayed 
     for (int x = 0; x < 6; x++) { 
      if (!hotel[x].equals("e")) { 
       System.out.println("Room " + x + " occupied by " + hotel[x]); 
      } 
     } 
    } 
    } 
} 

Я не слишком уверен, как получить доступ к глобальному массиву, который используется, может реально использовать некоторую помощь в этом. Заранее спасибо!

ответ

0

Не помещайте свою программную логику, кроме сбора ввода (в лучшем случае) в вашем основном. Создать экземпляр ваших методов класса и вызова на этом экземпляре:

public static void main(String... args){ 
    HotelProgram hotel = new HotelProgram(); 
    //...gather input 
    //while input != 10 
     //get room num 
     //get room name 
     hotel.addCustomer(num, name); 
     hotel.printRooms(); 

} 

Делая это таким образом вы следуете за объектно-ориентированное проектирование и избежать противного использования глобальных массивов/переменными.

Вот ваш код изменен, чтобы устранить глобал и быть более OO дружественными:

public class HotelProgram { 
    private String[] rooms = new String[7]; 

    public HotelProgram(){ 
     initialise(); 
    } 

    private void initialise() { 
     for (int x = 0; x < rooms.length; x++) { 
      rooms[x] = "e"; 
     } 
     System.out.println("initilise is complete."); 
    } 

    public void printRooms() { 
     for (int i = 0; i < rooms.length; i++){ 
      if(rooms[i].equals("e")){ 
       System.out.println("Room(" + (i+1) + ") is Empty."); 
      } 
      else{ 
       System.out.println("Room(" + (i+1) + ") is occupied by " + rooms[i]); 
      } 
     } 
    } 

    public void addCustomer(Scanner sc){ 
     int roomNum = 0; 
     while(roomNum-1 < 0 || roomNum-1 > rooms.length-1){ 
      System.out.println("Enter a room number from (1-" + (rooms.length) + "):"); 
      roomNum = sc.nextInt(); 
     } 

     System.out.println("Please provide the customer name for room " + (roomNum) + " :"); 
     sc.nextLine(); 
     String customer = sc.nextLine(); 
     rooms[roomNum-1] = customer; 
    } 

    public void printMenu(){ 
     System.out.println("\nMake a selection: "); 
     System.out.println("A. Add a customer to room"); 
     System.out.println("V. View all rooms"); 
     System.out.println("M. Print this menu."); 
     System.out.println("E. Exit\n"); 
    } 


    public static void main(String[] args) { 
     HotelProgram hotel = new HotelProgram(); 
     Scanner sc = new Scanner (System.in); 
     hotel.printMenu(); 

     String selection = ""; 
     while(true){ 
      selection = sc.nextLine(); 
      switch(selection){ 
       case "E": 
        System.out.println("Thanks for visiting. Have a good day!"); 
        System.exit(0); 
       case "A": 
        hotel.addCustomer(sc); 
        break; 
       case "V": 
        hotel.printRooms(); 
        break; 
       case "M": 
        hotel.printMenu(); 
        break; 
       default: 
        System.out.println("Bad input (" + selection + "), Try Again..."); 
      } 
     } 
    } 
} 
0

Это не хороший дизайн OO. Я настоятельно рекомендую вам изменить вашу логику программы. Кроме того, улучшите доступ к своим переменным с помощью методов getter и setter и избегайте использования статических переменных. Однако, если вы хотите получить доступ к своему статическому массиву в main(), вы должны создать экземпляр своего класса

HotelProgram myhotel = new HotelProgram(); 
myhotel.hotel[i]=.... // i can be any of the allowed array indices. 
Смежные вопросы