模拟客车售票系统 假设客车的坐位数是10行7列,使用一个二维数组记录客车售票系统中的所有座位号,并在每个座位号上都显示“【有票】”,然后用户输入一个坐标位置,按回车键,即可将该座位号显示为“【已售】”。 排好序
时间: 2024-03-30 14:33:17 浏览: 152
import java.util.Scanner;
public class TrainTicketSystem {
static final int ROWS = 10; // 客车的行数
static final int COLS = 7; // 客车的列数
static String[][] seats = new String[ROWS][COLS]; // 座位信息
public static void main(String[] args) {
// 初始化座位信息
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
seats[i][j] = "【有票】";
}
}
Scanner sc = new Scanner(System.in);
while (true) {
// 输出座位信息
System.out.println("===== 火车座位信息 =====");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
System.out.print(seats[i][j] + "\t");
}
System.out.println();
}
// 用户输入购票信息
System.out.println("请输入要购买的座位号(格式:行 列,如:2 3),输入-1结束:");
int row = sc.nextInt();
if (row == -1) {
break;
}
int col = sc.nextInt();
// 判断座位号是否合法
if (row < 1 || row > ROWS || col < 1 || col > COLS) {
System.out.println("输入的座位号不合法!");
continue;
}
// 判断座位是否已被购买
if (seats[row-1][col-1].equals("【已售】")) {
System.out.println("该座位已被购买,请选择其他座位!");
continue;
}
// 购票成功,更新座位信息
seats[row-1][col-1] = "【已售】";
System.out.println("购票成功!");
// 对座位进行排序
sortSeats();
}
sc.close();
}
// 对座位进行排序
private static void sortSeats() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
for (int m = i; m < ROWS; m++) {
for (int n = j + 1; n < COLS; n++) {
if (seats[i][j].equals("【已售】") && !seats[m][n].equals("【已售】")) {
String temp = seats[i][j];
seats[i][j] = seats[m][n];
seats[m][n] = temp;
} else if (!seats[i][j].equals("【已售】") && seats[m][n].equals("【已售】")) {
String temp = seats[i][j];
seats[i][j] = seats[m][n];
seats[m][n] = temp;
}
}
}
}
}
}
}
这是一个模拟客车售票系统的Java代码,使用了一个二维数组来记录所有座位的状态。在每个座位上都初始化了“【有票】”状态。
当用户输入座位号时,程序会检查该座位是否合法以及是否已售出。如果座位合法且未售出,则将该座位状态改为“【已售】”,并调用sortSeats()方法对座位进行排序。
sortSeats()方法使用了冒泡排序的思想,从左上角开始,将已售座位向左上角移动,将未售座位向右下角移动,直到所有座位都排好序为止。这样做可以让已售座位尽可能靠前,未售座位尽可能靠后,方便用户选座。
阅读全文