JAVA队列-单元测试失败
好的,我正在尝试对我的DSAQueue类进行单元测试,结果显示,isEmpty()、isFull()和dequeue()方法失败 以下是我的DSAQueue代码。 我认为我的Dequeue()方法出了问题,我无法找出哪里出了问题。 请帮我弄清楚。 非常感谢。提前 这是我的密码:JAVA队列-单元测试失败,java,unit-testing,queue,Java,Unit Testing,Queue,好的,我正在尝试对我的DSAQueue类进行单元测试,结果显示,isEmpty()、isFull()和dequeue()方法失败 以下是我的DSAQueue代码。 我认为我的Dequeue()方法出了问题,我无法找出哪里出了问题。 请帮我弄清楚。 非常感谢。提前 这是我的密码: public class DSAQueue { int count; Object[] queue; public static int DEFAULT_CAPACITY = 100;
public class DSAQueue {
int count;
Object[] queue;
public static int DEFAULT_CAPACITY = 100;
public DSAQueue(){
count = 0;
queue = new Object[DEFAULT_CAPACITY];
}
public DSAQueue(int maxCapacity){
count = 0;
queue = new Object[maxCapacity];
}
public int getCount(){
return count;
}
public boolean isEmpty(){
boolean empty = (count==0);
return empty;
}
public boolean isFull(){
boolean full = (count == queue.length);
return full;
}
public void enqueue(Object value){
if (isFull())
throw new IllegalArgumentException("Queue is full");
else
queue[count] = value;
count++;
}
public Object dequeue(){
Object frontVal;
frontVal = peek();
count--;
return frontVal;
}
public Object peek(){
Object frontVal;
if (isEmpty())
throw new IllegalArgumentException("Queue is empty");
else
frontVal = queue[0];
return frontVal;
}
}
您是对的,您的
dequeue()
并没有做到它的名称所暗示的:
- 它执行
以获取第一项peek()
- 它减少了
,因此保持一致计数
- 但是,它从不修改底层数组
。元素就留在那里队列
如果你想继续使用一个数组(这是合理的,因为队列必须是有界的),请考虑使用它作为一个数组。另一种选择是将队列实现为链表。
噢!好吧,但我该怎么修呢?对不起,我是新来排队的。请你详细说明一下好吗?我应该如何修改底层数组队列?只要想想操作需要做什么,您就会找到答案。您需要的是一个相当基本的数组操作…出列操作会更新内部表示,但它会从错误的一端删除。