2013-07-14 2 views
0

Я делаю программу для моделирования пациентов и тяжести их болезни.Создание экземпляров объектов с использованием цикла while

У меня возникли проблемы с добавлением разных экземпляров одного класса в другой класс.

По какой-то причине, когда я использую цикл while, он в конечном счете делает только один экземпляр.

Вот мой код:

while(myScan.hasNext()){ 

     String line = myScan.nextLine(); 
     String [] storage = line.split(","); 
     int severity = Integer.parseInt(storage[1]); 

     Patient x = new Patient(storage[0],severity); 
     Priority.add(x); 

     } 

Когда я делаю каждый экземпляр отдельно и напечатать мой класс «Приоритет», он отлично работает. Но при использовании цикла while он выводит только последний экземпляр, как будто он перезаписывается.

Для примера:

Patient p1 = new Patient(name1,1); 
Patient p2 = new Patient(name2,2); 
Patient p3 = new Patient(name3,3); 

Это будет работать нормально. но не при использовании цикла while для чтения из файла. Он будет печатать только p3.

+1

На каком языке это? Ява? – Blender

+0

Мне было интересно, что я, ОП, добавьте тег lang. Также где объявляется «Приоритет»? –

+0

поэтому приоритет имеет статический метод add? – user1759572

ответ

0

Я не могу видеть приоритет, определенный как хранилище (массив/связанный список). Поэтому вам нужно создать переменную для хранения экземпляров пациента данных.

ArrayList<Patient> items = new ArrayList<Patient>(); 
while(myScan.hasNext()){ 

    String line = myScan.nextLine(); 
    String [] storage = line.split(","); 
    int severity = Integer.parseInt(storage[1]); 

    Patient x = new Patient(storage[0],severity); 
    items.add(x); 

    } 

Теперь предметы должны содержать созданных пациентов. Надеюсь, это Java: D

0

Я думаю, это потому, что вы не итерируете свою структуру. Вы используете один и тот же Пациент x снова и снова.

Вы должны использовать списки или массив пациентов для создания ваших разных пациентов.
Или вы используете для этого приоритет? Если да, вы должны иметь возможность вывести своих разных пациентов из этого «списка».

Edit: Пример:

LinkedList<Patient> listOfPatients = new LinkedList<>(); 
while(myScan.hasNext){ 
    . 
    . 
    . 
    Patient x = ... ; 
    listOfPatients.add(x); 
} 
Patient p1=listOfPatients.getAt(0); 
Patient p2=listOfPatients.getAt(1); 
. 
. 
. 

Просто простой пример. Я надеюсь, что это помогает.

+0

Да, конечно. Надеюсь, это поможет. – Klumbe

+0

как я прочитал ваш комментарий выше: я думаю, ваш Priority-Class не сохраняет ваши объекты правильно. Экземпляры были созданы - наверняка, но они так и не были сохранены. Вы можете попробовать использовать LinkedList-Version i для тестирования. – Klumbe

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