我不太确定如何为我的作业解决这个问题。
我被要求跟踪多个航班,它们全部存储在一个文件中,每条线代表每个航班的各个方面。我被要求按有序列表中的航班号跟踪每个航班。
现在我只是试图在没有任何fileIO的情况下测试我的代码。这就是我现在所拥有的,
OrderedList flights = new OrderedList();
Flight flight = new Flight();
flight.setFlightNumber(678);
flights.add(flight);
flights.printList();
此代码工作正常,但是当我执行我的fileIO时,我需要将变量重新实例化到另一个航班,
....
flight = new Flight();
flight.setFlightNumber(876);
flights.add(flight);
flights.printList();
我认为这里发生的事情是找不到旧航班的指针?有没有人对如何解决这个问题有任何建议?
编辑:更多信息,编译时我得到一个运行时错误:
Exception in thread "main" java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer
我的OrderedList类中的错误被添加到了
的add methods行while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {
这是调试器的屏幕截图
答案 0 :(得分:3)
java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer
这意味着您尝试将Flight转换为Integer。航班不是整数,所以你不能这样做。
如果它发生在这一行:
while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) {
那么你投的东西是current.getData()
的结果。所以current.getData()
返回了一个Flight,你试图将它转换为Integer。我猜你实际上是这样的意思:
while(current != null && (newFlight.getFlightNumber() > ((Flight)current.getData()).getFlightNumber())) {
答案 1 :(得分:0)
在我看来,您不会丢失以前的航班记录,因为OrderedList
会保留这些记录的参考。