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中的数组是从零开始索引的,而不是从一开始。因此,您检查>=1and的代码<=10应更改为>=0and <=9,或使用2

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如果您希望用户输入数字 1 到 10 而不是 0 到 9,这可能是您想要做的事情 - 这是座位编号的更自然选择。

于 2012-09-01T20:17:38.640 回答