3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
在執(zhí)行之前添加一個(gè)空列表檢查Queue.add(Arriving.get(0));
。
那應(yīng)該可以解決問(wèn)題。
僅當(dāng) List 中存在某些內(nèi)容時(shí),才應(yīng)該執(zhí)行 get() 或 remove() 操作。

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
在 main 方法的代碼中,您初始化,并向其中queue添加 的實(shí)例。Process
ArrayList<Process> queue = new ArrayList<Process>();
queue.add(a);
queue.add(b);
queue.add(c);
queue.add(d);
queue.add(e);
Scheduler run = new Scheduler(queue);
queue被傳遞到 的構(gòu)造函數(shù)中Scheduler,只是再次初始化,從而刪除了Process之前在其中的所有實(shí)例。
public Scheduler(ArrayList<Process> Queue) {
Arriving = new ArrayList<Process>();
Queue = new ArrayList<Process>(); // Change this line to this.Queue = Queue
for (int i = 0; i<Queue.size(); i++) {
Arriving.add(Queue.get(i));
}
Sort();
currentTime = 0;
}
因此,當(dāng)您嘗試循環(huán)構(gòu)造函數(shù)中的所有對(duì)象時(shí),Queue.size()將返回 0。
您ArrayList<Process> Queue作為該類的成員,盡管該名稱反映了傳遞Queue到Scheduler.
您可以簡(jiǎn)單地設(shè)置,而不是循環(huán)遍歷并將Queue所有對(duì)象添加到。ArrivingArriving = Queue

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
您正在使用 ArrayList 作為隊(duì)列。myList.isEmpty()
在訪問(wèn)元素之前應(yīng)該檢查空隊(duì)列的測(cè)試。
或者,您可以使用,當(dāng)您使用或java.util.Deque
查看空雙端隊(duì)列的頭部或尾部時(shí),它會(huì)返回 null 。peekFirst()
peekLast()
添加回答
舉報(bào)