我遇到問題。代碼:隊列有什麼問題?
// withdraw method
public void withdraw(long n)
{
this.n = n;
Action a = new WithDraw();
a.doAction(n);
**if(actionsList.size() > 10)**
{
actionsList.poll();
actionsList.offer(a);
} else
{
actionsList.offer(a);
}
}
// Deposit method goes here
public void deposit(long n)
{
this.n = n;
Action a = new Deposit();
a.doAction(n);
**if(actionsList.size()<10)**
{
actionsList.offer(a);
} else
{
actionsList.poll();
actionsList.offer(a);
}
}
的主要功能如下:
acc1.deposit(1);
acc1.withdraw(2);
acc1.deposit(3);
acc1.withdraw(4);
acc1.deposit(5);
acc1.withdraw(6);
acc1.deposit(7);
acc1.withdraw(8);
acc1.deposit(9);
acc1.withdraw(10);
acc1.deposit(11);
acc1.withdraw(12);
acc1.deposit(13);
acc1.withdraw(14);
acc1.deposit(15);
acc1.displayActions();
我需要10最後添加的元素。在這之後,我得到了11個元素而不是10個。這是什麼問題?也許我不明白Queue size()是否正確?
ADDED打印方法:
public void displayActions()
{
for(Action s : actionsList)
{
System.out.println(s);
}
}
請發表您的'displayActions'方法。 –
這就是我所理解的(這是否正確?):您有兩種行爲:撤回和存款。這些行爲從銀行賬戶中提取或存入資金等某些地方。所有這些行爲都會排成一隊,只有最後十個人應該呆在那裏 - 無論是退出還是存款。我第一個不明白的是不對稱的代碼。隊列方面,他們也是這樣做的,應該有相同的代碼 - 或者我誤解了?你能解釋一下嗎? – jboi
首先,你理解正確。其次,這是否是對稱的並不重要,因爲我固定它使其對稱,但結果是相同的。 – Ernusc