我有一个飞机座位计划,但是我不知道如何打印仍然可用的座位数,以及输入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
您已经声明了很多不必要的变量,例如,您根本不需要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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。