开发者社区> 问答> 正文

飞机座位程序(二维数组)

我有一个飞机座位计划,但是我不知道如何打印仍然可用的座位数,以及输入q时如何退出座位。任何帮助将不胜感激。诚挚的您,Quang Pham

我不确定在哪里放置count ++来为已满的座位编号,以及如何设置前哨q以便程序退出。座椅布置的打印输出很好,X可以移动到应有的位置。

import java.util.Scanner ; /** * The AirplaneSeating program asks the user for the seat they would like to reserve. * A layout of the plane is printed and an X is placed in the reserved seat. The * program finds if the seat is available and if the entry is valid. A sentinel of q * ends the program. * * @author Quang Pham * @version Module8, Lab 2, 4/1/20 * * Algorithm: *
* 1. Greet user and ask which seat they would like to reserve. * 2. Print a layout of the plane and the seats available. * 3. Put an X in the position where the user would like to reserve. * 4. Loop and ask if they'd like to reserve another seat. * 5. Make certain seat is available and the entry is valid, if sentinel -1 * is entered, exit program. *
* Problem Description: *
* Write a program to assign passenger's seats in a small airplane. Assume the * plane has its seats numbered as follows: * * Row * 1 A B C D
* 2 A B C D * 3 A B C D * 4 A B C D * 5 A B C D * 6 A B C D * 7 A B C D * * You should verify that the user enters rows between 1 and 7 only, and * columns A, B, C, or D only. If the user enters an entry that is invalid, * print an error message telling them what's wrong, then prompt for the next * entry. Model the seats in the plane using a multi-dimensional array with * seven rows and four columns. Use a loop in your program which continues to * prompt for a seat to reserve until either the user specifies a sentinel to * stop the program, or when all seats are reserved. * After each entry from the user, the program should display the seat * reservation pattern, with an 'X' marking the seats already assigned. For * example, after seats 1A, 2B, and 4C are reserved, the display might show * the following: * * Row * 1 X B C D * 2 A X C D * 3 A B C D * 4 A B X D * 5 A B C D * 6 A B C D * 7 A B C D * * There are 25 seats available. This continues until either all seats are * filled or the user enters a sentinel indicating that he/she is done entering * reservations. If the user tries to reserve a seat which is already taken, the * program should say that that seat is occupied and ask for another choice. * Submit program files for all classes, as well as a print screen or screen * snip showing what your screen looks like after 4 or 5 seats have been assigned. * Be sure to demonstrate what happens when the user tries to reserve a seat that * is already taken or specifies an invalid seat (for example, 9A or 5E). */ public class AirplaneSeating { int count = 0 ; public static void main(String[] args) { // two- dimensional array with 7 rows and 4 columns char[][] seats = new char [7][4] ; for (int i = 0; i < 7; i++) { seats[i][0] = 'A' ; seats[i][1] = 'B' ; seats[i][2] = 'C' ; seats[i][3] = 'D' ; }

    String seatNumber = " " ; 
    int count = 0 ;
    String q = " " ;
    int numberOfSeatsAvailable = 0 ;
    int filled = 0 ;
    System.out.println("Welcome to the Airplane Seating Reservation System.") ;
    System.out.println("Please enter the seat (e.g.- 1A) you wish to reserve.") ;
    System.out.println("Enter q to exit.") ;
    Scanner keyboard = new Scanner(System.in) ;
    seatNumber = keyboard.nextLine() ;
    count++ ;
    if (seatNumber.equals("q"))
   {
        System.out.println("Program ended.") ;
        System.exit(0) ;
   } 
    else
   {
     //print seating pattern and put an X in the seatNumber location
     while((filled < 28) && (seatNumber.length() > 0))
     {
        int row = seatNumber.charAt(0) - '1' ;
        int col = seatNumber.charAt(1) - 'A' ;
        count ++ ;
        if (row < 0 || row > 7 || col < 0 || col > 4)
        {
            System.out.println("Input error. Enter seat to assign (e.g., '1A')," +
                "or q to quit.");
            seatNumber = keyboard.nextLine() ;
            count++ ;
        }
        else
        {
            if (seats[row][col] != 'X')
            {
                seats[row][col] = 'X' ;
                filled++;
                System.out.println(" ") ;
                printSeats(seats);
            }
            if (filled < 28)
            {
                System.out.println("Enter seat to assign (e.g., '1A')," +
                    "or q to quit.");
                seatNumber = keyboard.nextLine();
                count++ ;
            }
         }
      }         
    }
}

private static void printSeats(char[][] seats)
{
    int count = 0;
    System.out.println("Row") ;
    for (int i = 0; i < seats.length; i++)
    {
        System.out.println((i + 1) + "  " + 
            seats[i][0] + " " + seats[i][1] + "  " + seats[i][2] + " " + seats[i][3]) ;

    }
    count++ ;
    int numberOfSeatsAvailable = 0 ;     
    numberOfSeatsAvailable = (28 - count) ;      
    System.out.println("There are " + numberOfSeatsAvailable + " seats available.") ;
}  //end main

} //end class


问题来源:stackoverflow

展开
收起
七天一失眠 2020-03-28 11:16:42 1066 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    您已经声明了很多不必要的变量,例如,您根本不需要count,因为您已经有一个filled变量在做同样的事情。另外,将其filled作为全局static变量,以便可以使用main所有其他方法进行访问。或者,您可以将其作为参数传递给方法。

    更正后的程序如下:

    import java.util.Scanner;

    public class AirplaneSeating {

    static int filled = 0;
    
    public static void main(String[] args) {
        // two- dimensional array with 7 rows and 4 columns
        char[][] seats = new char[7][4];
        for (int i = 0; i < 7; i++) {
            seats[i][0] = 'A';
            seats[i][1] = 'B';
            seats[i][2] = 'C';
            seats[i][3] = 'D';
        }
    
        String seatNumber = " ";
        String q = " ";
        System.out.println("Welcome to the Airplane Seating Reservation System.");
        System.out.println("Please enter the seat (e.g.- 1A) you wish to reserve.");
        System.out.println("Enter q to exit.");
        Scanner keyboard = new Scanner(System.in);
        seatNumber = keyboard.nextLine();
        if (seatNumber.equals("q")) {
            System.out.println("Program ended.");
            System.exit(0);
        }
        // print seating pattern and put an X in the seatNumber location
        while (filled < 28 && seatNumber.length() > 0) {
            int row = seatNumber.charAt(0) - '1';
            int col = seatNumber.charAt(1) - 'A';
            if (row < 0 || row > 7 || col < 0 || col > 4) {
                System.out.println("Input error. Enter seat to assign (e.g., '1A')," + "or q to quit.");
                seatNumber = keyboard.nextLine();
                if (seatNumber.equals("q")) {
                    System.out.println("Program ended.");
                    System.exit(0);
                }
            } else {
                if (seats[row][col] != 'X') {
                    seats[row][col] = 'X';
                    filled++;
                    System.out.println(" ");
                    printSeats(seats);
                }
                if (filled < 28) {
                    System.out.println("Enter seat to assign (e.g., '1A')," + "or q to quit.");
                    seatNumber = keyboard.nextLine();
                    if (seatNumber.equals("q")) {
                        System.out.println("Program ended.");
                        System.exit(0);
                    }
                }
            }
        }
    }
    
    private static void printSeats(char[][] seats) {
        System.out.println("Row");
        for (int i = 0; i < seats.length; i++) {
            System.out
                    .println((i + 1) + "  " + seats[i][0] + " " + seats[i][1] + "  " + seats[i][2] + " " + seats[i][3]);
    
        }
        int numberOfSeatsAvailable = (28 - filled);
        System.out.println("There are " + numberOfSeatsAvailable + " seats available.");
    } // end main
    

    } // end class


    答案来源:stackoverflow

    2020-03-28 11:17:32
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载