0

さて、基本的に私は次のオプションを実行するホテルを作成しています

System.out.println("V: To View all rooms");
System.out.println("A: To Add customer to a room");
System.out.println("E: To Display empty rooms");
System.out.println("D: To Delete customer from a room");
System.out.println("F: Find room from customer name");
System.out.println("O: View rooms alphabetically by name");
  • これで、表示、顧客の追加、空の部屋の表示、削除を行うことができます。」
  • しかし、私は複数の顧客を追加できないことに気づきました。コードは、選択した各部屋に同じ名前の顧客を割り当てるだけです。

例:TOMという名前を部屋2に追加し、後でDENNISを部屋3に追加するとします。部屋2と部屋3は、デニスが占有していることを示しています。--Stringの顧客は1つの情報しか保存できないため、理由はわかります。

Customerをアレイに変更する必要があると感じています。

(念頭に置いておいてください、私はArrayListを使いたくありません)。

SO:私の質問は、これをどのように解決するのですか?Customerを配列として使用しようとしたため、コーディング全体が台無しになりました(ローカル履歴が元に戻ってくれてありがとう!)

コード:

package testroom;

import java.util.*;

public class TestRoom{

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String Customer = null;
        int roomNum = 1;
        String Option;

        String[] hotel = new String[12];

        initialise(hotel); 

        while ( roomNum  < 11 )
        {

            System.out.println("Hotel Booking Options");
            System.out.println("V: To View all rooms");
            System.out.println("A: To Add customer to a room");
            System.out.println("E: To Display empty rooms");
            System.out.println("D: To Delete customer from a room");
            System.out.println("F: Find room from customer name");
            System.out.println("O: View rooms alphabetically by name");

            Option = input.next();

            if (Option.equals("V")){ //viewing all rooms
                view(hotel, Customer);  
            }

            if (Option.equals("A")){ // adding a customer to a room

                System.out.println("Enter room number(1-10)");
                roomNum =input.nextInt();
                System.out.println("Enter name for room " + roomNum + " : " ) ;
                Customer = input.next();
                hotel[roomNum] = Customer ;
                add(hotel, Customer);
                System.out.println(" ");

            }

            if (Option.equals("E")){ //view all empty rooms
                vacant(hotel, Customer); //links to private static void empty
            }

            if (Option.equals("D")){ //Deletes a customer from a room

                //Searches if room is occupied, if it is then it will delete customer from that room
                view(hotel, Customer);
                System.out.println("Enter the room which you want to delete a customer from: ");
                roomNum = input.nextInt();
                hotel[roomNum] = "empty";

                delete(hotel, Customer);
                System.out.println("");

            }

            if (Option.equals("F")){ //view all empty rooms
                find(hotel); //links to private static void empty
            }

        }
    }

    private static void initialise( String hotelRef[] )
    {
        for (int x = 1; x < 11; x++ )
            hotelRef[x] = "empty";
        System.out.println( "Welcome to The Plaza");
    }


    public static void view(String hotel[], String Customer){

        for (int x =1; x <11; x++)
        {
            int z=0;
            String Customername = Customer;
            hotel[z]= Customername;

            if (hotel[x].equals("empty"))
                System.out.println("room " + x + " is empty");
            else {
                System.out.println("room " + x + " is occupied by "+ hotel[z]);
            }
        }
    }

    private static void add(String hotel[], String Customer){
        for (int x =1; x <11; x++)
        {
            int z=0;
            String Customername = Customer;
            hotel[z]= Customername;
            if (hotel[x].equals("empty"))
                System.out.println("room " + x + " is empty");
            else {
                System.out.println("room " + x + " is occupied by "+ hotel[z]);
            }

        }
    }

    private static void vacant(String hotel[], String Customer){
        for (int x = 1; x < 11; x++ )
        {
            int z=0;
            String Customername = Customer;
            hotel[z]= Customername;
            if (hotel[x].equals("empty")) //if statement
                System.out.println("room " + x + " is empty"); 
        }

    }


    private static void delete(String hotel[], String Customer){ //link to this when pressed the D key
        //view (hotel);
        for (int x = 1; x < 11; x++ )
        {
            int z=0;
            String Customername = Customer;
            hotel[z]= Customername;
            if (hotel[x].equals("empty"))
            { 
                System.out.println("room " + x + " is empty");
            }
            else {
                System.out.println("room " + x + " occupied by " + hotel[x]);
            }
        }
    }

    private static void find(String hotel[]){

        Scanner input = new Scanner(System.in);   
        System.out.println("Enter customer name for room:" );
        String customersname;
        customersname = input.next();  //stores name they enter as customers name
        for (int x = 0; x < 10; x++ )
        {
            if (hotel[x].equals(customersname))
                System.out.println("room " + x + " is occupied                       by "+hotel[x]);

        }
    }
}
4

2 に答える 2

1

問題の理由は、新しいエントリごとにクラスをインスタンス化していないためです。申し訳ありませんが、この質問には根本的に間違っていることが多すぎます。あなたがする必要があるのは、データメンバーとデータアクセス関数を含むCustomerクラスを定義し、必要に応じて新しいオブジェクトを作成し、それらを別のクラスから完全に移入/利用することです。

あなたはこのようなことを試すことができます:

import java.util.*;

class Customer
{
    private String name;
    private int room;

    public void setName(String name)
    {
        this.name=name;
    }

    public String getName()
    {
        return this.name;
    }

    public void setRoom(int room)
    {
        this.room=room;
    }

    public int getRoom()
    {
        return this.room;
    }
}

class Hotel
{
    public static void initialize(Customer RoomList[])
    {
        for(int i=0; i<RoomList.length; i++)
        {
            RoomList[i]=new Customer();
            RoomList[i].setName("EMPTY");
            RoomList[i].setRoom(i+1);
        }
    }

    public static void viewList(Customer RoomList[])
    {
        for(int i=0; i<RoomList.length; i++)
        {
            if(RoomList[i].getName()=="EMPTY")
                System.out.println("Room number "+RoomList[i].getRoom()+" is vacant.");
            else
                System.out.println("Room number "+RoomList[i].getRoom()+" is ocupied by "+RoomList[i].getName()+".");
        }
        System.out.println();
    }

    public static boolean addCustomer(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals("EMPTY"))
            {
                RoomList[i].setName(name);
                return true;
            }
        return false;
    }

    public static void showEmptyRooms(Customer RoomList[])
    {
        System.out.println("Available rooms are:");
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName()=="EMPTY")
                System.out.println(RoomList[i].getRoom());
        System.out.println();
    }

    public static boolean deleteCustomer(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals(name))
            {
                RoomList[i].setName("EMPTY");
                System.out.println("Deletion successful.\n");
                return true;
            }
        return false;
    }

    public static int getIndex(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals(name))
                return i;
        return -1;
    }

    public static void main(String[] args)
    {
        Customer[] RoomList = new Customer[12];
        String name;
        initialize(RoomList);
        Scanner input = new Scanner(System.in);
        int option=0;

        do
        {
            System.out.println("        Hotel Booking Options");
            System.out.println("=====================================");
            System.out.println("1: To View all rooms");
            System.out.println("2: To Add customer to a room");
            System.out.println("3: To Display empty rooms");
            System.out.println("4: To Delete customer from a room");
            System.out.println("5: Find room from customer name");
            System.out.println("0: Exit");

            System.out.print("\nEnter your choice: ");
            option = input.nextInt();
            System.out.println();

            switch(option)
            {
                case 1:
                {
                    viewList(RoomList);
                    break;
                }
                case 2:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    if(!addCustomer(RoomList, name))
                        System.out.println("No rooms available!");
                    break;
                }
                case 3:
                {
                    showEmptyRooms(RoomList);
                    break;
                }
                case 4:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    deleteCustomer(RoomList, name);
                    break;
                }
                case 5:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    System.out.println("Customer's room: "+RoomList[getIndex(RoomList, name)].getRoom()+"\n");
                    break;
                }
                case 0:
                {
                    System.out.println("\nThank you!\n");
                    break;
                }
                default:
                {
                    System.out.println("Invalid option!\n");
                    break;
                }
            }


        }while(option!=0);
    }
}
于 2013-03-02T19:54:10.793 に答える
0

あなたのコードは少し間違っているようです。追加の顧客コードを見てください。顧客をどこに追加しても、インデックス 0 に追加されます。:)

 if (Option.equals("A")){ // adding a customer to a room
    System.out.println("Enter room number(1-10)");
    roomNum =input.nextInt();
    System.out.println("Enter name for room " + roomNum + " : " ) ;
    Customer = input.next();
    hotel[roomNum] = Customer ; // adds to the room number.
    add(hotel, Customer); // adds to the zero-th index.
    System.out.println(" ");
 }


private static void add(String hotel[], String Customer){
    for (int x =1; x <11; x++)
    {
        int z=0;
        String Customername = Customer;
        hotel[z]= Customername; // this line is the culprit.
        if (hotel[x].equals("empty"))
            System.out.println("room " + x + " is empty");
        else {
            System.out.println("room " + x + " is occupied by "+ hotel[z]);
        }

    }
}
于 2014-05-15T06:25:50.103 に答える