2014-02-03 2 views
0

Я не слишком уверен в том, как я должен решить эту проблему для задания, которое у меня есть.Повторное создание объектов без потери предыдущих

Меня просят отслеживать несколько рейсов, все они хранятся в одном файле, каждая строка представляет собой различные аспекты каждого рейса. Меня просят отслеживать каждый рейс по его номеру рейса в упорядоченном списке.

Сейчас я просто пытаюсь проверить свой код без какого-либо файла. Вот что я прямо сейчас,

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(); 

Я думаю, что что здесь происходит, указатель на старый рейс не найден? Есть ли у кого-нибудь предложения о том, как обойти это?

EDIT: Некоторая больше информации, при компиляции я получаю во время выполнения ошибки:

Exception in thread "main" java.lang.ClassCastException: Flight cannot be cast to java.lang.Integer 

Ошибка брошенная в моем OrderedList классе одним из методов оной линии,

while(current != null && (newFlight.getFlightNumber() > (Integer)current.getData())) { 

Вот скриншот отладчика,

Debugger

+3

Возможно, вам нужно будет сообщить нам более подробную информацию о том, как ваш код не работает. Я сам потерялся. –

+0

Ах, извините, я отредактирую сообщение за секунду с ошибками. – user123

+0

... если ответ Xi Han не подходит. –

ответ

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())) { 
+0

выглядит хорошо для меня . 1+ –

+0

Большое спасибо за помощь! – user123

0

В м вы не потеряете предыдущие записи рейсов, потому что OrderedList сохранит ссылку на эти записи.

+0

Какой тип 'getData()' return? –

+0

public Object getData() { данные возврата; } – user123

+0

Возможно, вы захотите использовать '((Flight) (current.getData()). GetFlightNumber()' –

Смежные вопросы