2015-04-28 2 views
4

Я создал массивList treat, чтобы показать 5 экземпляров обрабатывающей комнаты. Я также создал связанныйList inTreatment для обработки комнаты, чтобы передать 5 объектов пациента в queue, однако когда я проходил несколько объектов связанногоList они постоянно заменяют первый добавленный элемент вместо перехода к следующему доступному элементу. Я считаю, что проблема связана с линией inTreatment.add, но я не уверен, как ссылаться на следующий доступный индекс. Все предложения более чем приветствуются. Ниже приведен мой код для создания массива и добавление связанного списка inTreatment.Передача объекта следующему элементу в связанном списке

Создания процедурных кабинетов массив

public static void createTreatmentRooms() { 
    for (int i = 0; i < treat.length; i++) { 
     treat[i] = new TreatmentRoom(); 
     treat[i].setAvailable(true); 
    } 
} 

Добавить в процедурные кабинеты метода

for (int i = 0; i < TreatmentRoom.treat.length; i++) { 

     if ((TreatmentRoom.treat[i].isAvailable()) 
       && (Queue.queue.size() != 0) 
       && (Queue.queue.getFirst().getTriage() != Status.NOT_ASSESSED)) { 

      // add patient to inTreatment list for future sorting... 
      inTreatment.add(queue.getFirst()); 
      System.out.println("taken to treatment queue"); 
      // remove patient from front of queue 
      for (Patient p : queue) { 
       System.out.println(p.getFirstName()); 
      } 
      queue.poll(); 
      System.out.println("second queue"); 
      for (Patient p : queue) { 
       System.out.println(p.getFirstName()); 
      } 
      System.out.println("removed from queue"); 

      // if free, add patient to treatment room 
      TreatmentRoom.treat[i].setPatient(inTreatment.getFirst()); 
      System.out.println("sent to treatment room" 
        + TreatmentRoom.treat[i]); 

      // System.out.println("patient added" + 
      // queue.get(i).getFirstName()); 
      // set treatment room to unavailable 
      TreatmentRoom.treat[i].setAvailable(false); 
      System.out.println("treatment room busy"); 

     } else { 
      System.out.println("Treatment room is not available"); 

     } 

    } 
} 
+0

Вы пробовали использовать его в режиме отладки? –

+0

@ChrisBolton Я относительно новичок в java и не отлаживал отладку, но почему-то не знаю, с чего начать – cg91

+0

Вы используете eclipse? –

ответ

1

проблема может прийти отсюда:

queue.remove(i); 

вы удаляете элемент по индексу i , но то, что i находится в диапазоне номеров, и имеет nothin g, чтобы сделать это с помощью очереди?

Возможно, вы захотите удалить первый элемент.

Side Примечания: должна бытьpoll()метод, который позволяет заглянуть и удалить первый элемент из очереди за один вызов по пути, но я unusure какого типа очереди вы используете здесь , он не похож наjava.util.Queue.

+0

'queue' - еще один связанный список, из которого я вызываю объекты пациента. Да, я вижу, что 'queue.remove (i)' неверно, и я изменил это, но проблема все еще сохраняется, есть ли что-то, что мне нужно изменить с помощью метода 'inTreatment.add'? – cg91

+0

Можете ли вы обновить свой код с помощью своих изменений? FYI, 'inTreatment.add()' добавит ваши элементы в конец списка, в этом нет проблем. Возможно, вы захотите рассмотреть возможность использования 'java.util.Queue' для вашей очереди, если вы все равно используете стандартную библиотеку java ;-) – Joffrey

+0

' poll() 'фактически существует и в LinkedList', FYI ;-) – Joffrey

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