Java机票预订系统数组应用与交互逻辑问题求助
机票预订系统问题解决方案
问题1:将旅客数据存入数组支持添加多名旅客
常见问题分析
- 使用固定长度普通数组时,旅客数量达到上限后无法继续添加;
- 未将旅客信息封装为对象,用多个独立数组存储姓名、证件号等数据,易引发数据混乱;
- 缺少循环逻辑,无法支持用户连续添加多名旅客。
解决方案
- 封装旅客实体类:把旅客的姓名、身份证号、联系方式等信息封装成
Passenger类,实现数据统一管理; - 改用动态数组
ArrayList:替代普通数组,它支持自动扩容,无需手动处理长度限制; - 添加循环选择逻辑:让用户可自主选择继续添加旅客或结束流程。
代码示例
import java.util.ArrayList; import java.util.Scanner; // 旅客实体类 class Passenger { private String name; private String idCard; private String phone; public Passenger(String name, String idCard, String phone) { this.name = name; this.idCard = idCard; this.phone = phone; } // 按需添加get方法用于后续查询 public String getName() { return name; } @Override public String toString() { return "旅客姓名:" + name + ",身份证号:" + idCard + ",手机号:" + phone; } } public class TicketBookingSystem { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Passenger> passengerList = new ArrayList<>(); while (true) { System.out.println("请输入旅客姓名:"); String name = scanner.nextLine(); System.out.println("请输入旅客身份证号:"); String idCard = scanner.nextLine(); System.out.println("请输入旅客手机号:"); String phone = scanner.nextLine(); // 存入动态数组 passengerList.add(new Passenger(name, idCard, phone)); System.out.println("旅客信息添加成功!"); System.out.println("是否继续添加旅客?(y/n)"); String choice = scanner.nextLine(); if (!choice.equalsIgnoreCase("y")) { break; } } // 打印所有旅客信息 System.out.println("\n已添加的所有旅客信息:"); for (Passenger p : passengerList) { System.out.println(p); } scanner.close(); } }
问题2:让菜单列表仅按回车键后才触发显示
常见问题分析
- 菜单代码在程序启动后直接执行打印,未等待用户操作触发;
- 未处理输入缓冲区,可能导致菜单自动重复显示。
解决方案
在打印菜单前,通过Scanner读取用户输入,等待用户按下回车键后再执行菜单打印逻辑;同时将菜单显示封装为独立方法,便于重复调用。
代码示例
import java.util.Scanner; public class TicketBookingSystem { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { // 提示用户按回车触发菜单 System.out.println("请按回车键显示操作菜单..."); scanner.nextLine(); // 读取回车键输入 // 显示菜单 showMenu(); // 处理用户选择 System.out.println("请输入操作选项:"); int choice = scanner.nextInt(); scanner.nextLine(); // 清除输入缓冲区的换行符 switch (choice) { case 1: System.out.println("执行添加旅客操作..."); // 可调用上方添加旅客的逻辑 break; case 2: System.out.println("执行查询机票操作..."); break; case 0: System.out.println("退出系统"); scanner.close(); return; default: System.out.println("无效选项,请重新输入"); } } } // 菜单显示方法 private static void showMenu() { System.out.println("\n===== 机票预订系统菜单 ====="); System.out.println("1. 添加旅客"); System.out.println("2. 查询机票"); System.out.println("0. 退出系统"); System.out.println("==========================="); } }
内容的提问来源于stack exchange,提问作者user22841596
相关产品推荐
相关产品推荐

