Мы должны написать программу для симуляции банка для моего класса по информатике.У программы есть три кассира, куда клиенты могут пойти.Третий кассир берет стек заданий, когда его размер больше 0. Я инстанцировал значения данных для этого третьего кассира в поле данных следующим образом:
public static Task firstTask = new Task(916,3);
public static Teller teller3 = new Teller(new Customer(0,0,0),firstTask,3);
Затем у меня есть метод, в который я написалсделать задачу запуска кассира в классе кассира.
public void startTask(Task arrivingTask) {
currentTask = arrivingTask;
}
Я вызываю это с тем же значением firstTask в основном методе.
teller3.startTask(firstTask);
После этого я нажимаю на taskStack 2 новые задачи.
taskStack.push(new Task(910,12));
taskStack.push(new Task(913,3));
Я также создаю экземпляр nextTask (следующая задача, поступающая в файл поступлений).
Task nextTask = new Task(925,2);
У меня также есть метод print в классе кассира для печати задачи.
public void printTask() {
System.out.println("currentTask = (" + this.currentTask.getArrival() + "," + this.currentTask.getServiceTime() + ")");
}
Если я запускаю этот код: teller3.printTask();
, вывод будет currentTask = (925,2).
Я не испытываю эту проблему, когда делаю что-то подобное с клиентами.Я создаю экземпляры этих значений в поле данных и выполняю такие действия, как taskStack.push (n), где n = новая задача (910,12).Все остальное в моем коде работает отлично, кроме этого.
Позже в коде event5, событие, которое обрабатывает завершение задачи, содержит следующий код, относящийся к задаче, и ничего больше.
firstTask.printTask();
if (taskStack.getSize() > 0) {
System.out.println(currentTime);
firstTask = taskStack.pop();
teller3.startTask(firstTask);
Event newEvent = new Event(currentTime +
teller3.T1ServiceTime(),5);
Elist.insert(newEvent);
teller3.isBusy = true;
firstTask.printTask();
}
Здесь вы можете видеть, что я сделал две вещи.Я сначала напечатал задачу.Задача всегда печатается как значение, которое я ранее присвоил nextTask, которое я никогда не определяю в своей программе как firstTask.Когда taskStack больше 0, я устанавливаю firstTask равным taskStack.pop ().Это на самом деле выдает значение, но не меняет значение firstTask.Я знаю из списка событий, потому что новое событие добавляется каждые три минуты.Я снова печатаю задачу после выполнения оператора if (что я знаю по коду, который он выполняет), и firstTask не меняет своего значения.Куда мне идти отсюда?