5

10要素(座席)のシンプルな予約システムに取り組んでいます。1から5までの要素が設定されているか確認したい。はいの場合、要素を6から10に設定します(その逆)。

要素に値を複数回割り当てないでください。これまでの私のコード。

    boolean[] seats = new boolean[10];

    Scanner input = new Scanner(System.in);
    System.out.print("Choose FirstClass(1) / Economy(2): ");
    int flightClass = input.nextInt();

    for (int j = 0; j < seats.length; j++) {
        System.out.println("\nEnter Seat Number: ");
        int enterSeat = input.nextInt();
        if (flightClass == 1) {
            if (enterSeat >= 0 && enterSeat <= 5) {
                System.out.println("You're in the First Class.");

                seats[enterSeat] = true;
                System.out.printf("You're Seat Number is %d\n", enterSeat);

            }

        } else if (flightClass == 2) {
            if (enterSeat >= 6 && enterSeat <= 10) {
                System.out.println("You're in the Economy.");

                seats[enterSeat] = true;
                System.out.printf("You're Seat Number is %d\n", enterSeat);
            }

        }

私の質問:1から5までの要素が設定されているかどうかを確認するにはどうすればよいですか?設定されている場合は、要素を6から10まで設定し、その逆も同様です。

例えば:

座席番号を入力してください 予約する:1

座席番号を入力してください 予約する:2

座席番号を入力してください 予約する:3

座席番号を入力してください 予約する:4

座席番号を入力してください 予約する:5

ファーストクラスの座席(1-5)がすべて設定されました。現在、残りの座席は6〜10です。

座席番号を入力してください 予約するには:6など...

4

1 に答える 1

6

Java 1の配列は、1からではなく、0からインデックスが付けられます。したがって、チェック>=1してと<=10に変更する必要があるコード、または2を使用するコード>=0<=9

seats[enterSeat-1]

それ以外の

seats[enterSeat]

サブ配列の要素の中から次に使用可能な要素を見つけるには、次のループを使用できます。

int firstFree = -1;
for (int j = 0 ; j != 5 ; i++) {
    if (!seat[j]) {
        firstFreeSeat = j;
        break;
    }
}
if (firstFreeSeat == -1) {
    System.out.printl("Sorry!");
}


1 C、C ++、C#、Objective C、およびその他の多くの言語

2これは、ユーザーが0から9ではなく1から10の数字を入力することを期待している場合に実行したいことです。これは、座席番号のより自然な選択です。

于 2012-09-01T20:17:38.640 に答える