gpt4 book ai didi

java - 队列出了什么问题?

转载 作者:行者123 更新时间:2023-12-01 23:28:59 25 4
gpt4 key购买 nike

我遇到了问题。代码:

// 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 个。这有什么问题吗?也许我不正确理解队列大小()?

添加打印方法:

public void displayActions()
{
for(Action s : actionsList)
{
System.out.println(s);
}
}

最佳答案

当大小等于 10 时,您仍然可以添加另一个,因此您得到 11。

正如其他人提到的 > 相反是 <=还有>=<==!=简而言之,您应该尽量保持代码的一致性。如果代码应该做同样的事情,那么您应该以相同的方式编写它,如果不使用一种方法来完成这两者。

public void withdraw(long n) {
queueAction(new Withdrawal(n));
}

public void deposit(long n) {
queueAction(new Deposit(n));
}

void queueAction(Action action) {
action.doAction();
if (actionsList.size() >= 10)
actionsList.poll();
actionsList.offer(aaction);
}

我已经取出this.n = n;因为这似乎没有做任何事情,而且我不认为在排队之前执行操作有什么意义...

我不知道为什么我想默默地放弃任何早于过去 10 年的存款。不过,我希望能够忽略我的一些提款。

关于java - 队列出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com