Java如何修改代码实现从Flight列表中查询单条航班记录
航班查询代码修正方案
原有代码存在的问题
- 逻辑矛盾:方法入参为查询用的id,但判断条件用到了未声明的
flightNumber变量,无法通过编译 - 命名不规范:循环变量名和类名
Flight重名,极易引发逻辑歧义 - 类型转换错误:存在将
List<Flight>集合强制转换为Flight对象的错误代码,运行时会直接抛出ClassCastException - 返回逻辑错误:即使找到匹配项,也没有返回当前匹配的航班对象,反而用id取下标对应元素,和查询需求完全不符
- 无匹配场景没有处理:遍历结束找不到对应航班时直接调用
flights.get(id),极易触发下标越界异常
调整后可运行代码
public Flight execute(FlightBookingSystem flightBookingSystem, int id) throws FlightBookingSystemException { List<Flight> flights = flightBookingSystem.getFlights(); for (Flight flight : flights) { // 按航班ID匹配,如果需要按航班号查询,可修改匹配逻辑 if (flight.getId() == id) { System.out.println(flight.getFlightNumber() + " 匹配到对应航班"); return flight; } } // 无匹配时抛出业务异常 throw new FlightBookingSystemException("未查询到ID为" + id + "的航班记录"); }
可选调整:按航班号查询
如果你需要按航班号而非ID查询,只需要修改两处即可:
- 方法入参从
int id改为String flightNumber - 判断条件替换为
flight.getFlightNumber().equals(flightNumber)(字符串比对必须用equals不能用==)
内容的提问来源于stack exchange,提问作者Akbar Ali
相关产品推荐
相关产品推荐

