-1

予約メニューには、a、b、c の 3 つのオプションがあるメインがあります。オプション「a」 - 部屋タイプの選択。選べる5タイプのお部屋。オプション 'b' - 各部屋のアドオンの選択。各アドオンは追加料金で選択できます。オプション 'c' - 予約ページからメインページに戻る

私のプログラムは、5 種類の部屋を表示する必要があります。この時点で、顧客はオプション「a」、「b」または「c」のみを選択できます。

顧客が部屋を選択するときに 1 ~ 5 を含まない無効な番号を入力した場合、システムはエラー メッセージを表示し、ユーザーに再度入力するように求める必要があります。ユーザーが希望する部屋のタイプを入力したら、各部屋の数量を入力することができます。部屋のタイプ。部屋タイプを選択すると、各部屋タイプのアドオンを選択するように求められます。

これは以下の私のコードです。ユーザーがオプション「b」を選択したときに、オプション「a」から整数配列リストに保存したアドオンの数を取得できません。

2 つの arraylist を初期化しましたが、それらが正しいかどうかわかりません。最初の arraylist は、roomtype と date の文字列を格納するためのものです。2 番目の配列リストは整数で、部屋の価格、必要な部屋数、アドオンの数、宿泊数、ユーザーが選択したアドオン オプション、およびアドオンの数量を格納します。

私はコーディングにかなり慣れていないので、助けが必要です。

import java.util.*;
import java.io.*;

public class RoomSelection {

    public RoomSelection() throws InputMismatchException {

        String choiceStr;//initialize choiceStr which is use for reading lines from scanner input
        char choiceChar;//initialize choiceStr which is use for reading character from scanner input
        int choice;//initialize choiceStr which is use for reading integer from scanner input
        String datee;
        String[] roomType = {"Single Room", "Double Room", "Deluxe Room", "Junior Room", "Suite"}; //Initialize a array for room type
        Integer[] priceRoom = {160, 200, 280, 380, 500}; //Initialize a array for room prices
        Integer[] priceAdd = {25, 60, 70, 100}; //Initialize a array for add-on prices

        ArrayList<String> roomAndDate = new ArrayList<String>();
        ArrayList<Integer> all = new ArrayList<Integer>();
        Scanner input = new Scanner(System.in); //Initialize a scanner input

        System.out.println("Room Selection");
        System.out.println("==============\n");
        System.out.println("[a] Room Type");
        System.out.println("[b] Add-Ons");
        System.out.println("[c] Main Menu");
        System.out.println("Type 'a' to select Room Type and state the desire quantity for each type.");
        System.out.println("Type 'b' to select the Add-Ons.");
        System.out.println("Type 'c' to exit from  the Booking Menu.");
        System.out.println("Please enter your option (a, b or c): ");

        choiceStr = input.nextLine();
        choiceChar = choiceStr.charAt(0);
        while (true) {

            switch (choiceChar) {
                case 'a':
                    System.out.println("Room Type");
                    System.out.println("=====================================================");
                    System.out.println("(1) Single Room (1 person) - Price: S$160");
                    System.out.println("(2) Double Room (2 persons) - Price: S$200");
                    System.out.println("(3) Deluxe Room (2 persons) - Price: S$280");
                    System.out.println("(4) Junior Suite (2 persons) - Price: S$380");
                    System.out.println("(5) Suite (2 persons) - Price: S$500\n");
                    System.out.println("Enter Room types (Enter '1' to '5')");
                    choice = input.nextInt();
                    while (choice > 5) {
                        if (choice > 5) {
                            System.out.println("Please enter number between '1' to '5'!");
                            choice = input.nextInt();
                        }
                    }

                    String roomTypess = roomType[choice - 1];
                    roomAndDate.add(roomTypess);
                    int storePricee = priceRoom[choice - 1];
                    all.add(storePricee);

                    System.out.println("Number of rooms required (maximum 10): ");
                    choice = input.nextInt();
                    while (choice > 10) {
                        if (choice > 10) {
                            System.out.println("Please enter again!");
                            choice = input.nextInt();
                        }
                    }
                    all.add(choice);

                    for (int i = 0; i < choice; i++) {
                        System.out.println("Enter the date of checked-in (dd/mm/yy) for " + roomAndDate.get(0) + " " + (i + 1));
                        choiceStr = input.nextLine();
                        choiceStr = input.nextLine();
                        roomAndDate.add(choiceStr);
                        System.out.println(roomAndDate);
                        System.out.println("Enter number of Add-on for " + roomAndDate.get(0) + " " + (i + 1) + ": ");
                        choice = input.nextInt();
                        while (choice > 4) {
                            if (choice > 4) {
                                System.out.println("Please enter again! Choose only option 1 to 4");
                                choice = input.nextInt();
                            }
                        }
                        all.add(choice);
                        System.out.println("Number of night(s) required (maximum 30) for " + roomAndDate.get(0) + " " + (i + 1) + ": ");
                        choice = input.nextInt();
                        while (choice > 30) {
                            if (choice > 30) {
                                System.out.println("Please enter again! Maximum is 30 days!");
                                choice = input.nextInt();
                            }
                        }
                        all.add(choice);


                    }

                    new RoomSelection();
                    break;
                case 'b':
                    System.out.println("Add-Ons");
                    System.out.println("=====================================================");
                    System.out.println("(1) Breakfast voucher (1 person) per day - Price: S$25");
                    System.out.println("(2) Spa voucher (1 person) - Price: S$60");
                    System.out.println("(3) Half Day Tour voucher (1 person) - Price: S$70");
                    System.out.println("(4) Full Day Tour voucher (1 person) - Price: $100\n");



                    for (int i = 0; i < (Integer) all.get(3); i++) {

                        System.out.println("Enter Add-On option");
                        choice = input.nextInt();
                        while (choice > 4) {
                            if (choice > 4) {
                                System.out.println("Please enter again! Choose only option 1 to 4");
                                choice = input.nextInt();
                            }
                        }
                        all.add(choice);
                        System.out.println("Enter quantity required for Add-On option " + (i + 1) + ": ");
                        choice = input.nextInt();
                        all.add(choice);
                    }


                    break;
                case 'c':
                    new MainPage1();
                    break;
                default:
                    continue;
            }
        }
    }
}
4

1 に答える 1

1

私はあなたのコードを見ましたが、あなたが必要としないものと改善する必要があるものがいくつかあります。

  1. 整数input.nextInt();を読み取る代わりに、入力文字列を読み取り、実行して結果を使用する必要があります (文字列が有効な整数ではないことがInteger.parseInt(yourString)スローされる場合)。NumberFormatException
  2. whileループの場合、値のケースを除外する必要があります0
  3. 条件に が組み込まれているため、ifステートメント内からステートメントを削除します。whilewhileif
  4. 2 つの配列リストを持つ代わりに、必要な機能を持つオブジェクトの配列リストを作成します。
    • ルーム、コストなどのタイプをフィールドとして持つオブジェクトを作成します。
    • このオブジェクトの配列リストを関数の外で定義して割り当て、RoomSelection()常にアクセスできるようにします。
    • リストと同じように で定義すると、RoomSelection()呼び出すときにnew RoomSelection();、既存のリストを使用する代わりに、リストの新しいインスタンスを作成します。

お役に立てば幸いです。最後の点は非常に重要です。

于 2012-07-27T08:53:39.413 に答える