Java Queue Peek()保持返回最新条目,而不是第一次输入
我试图偷看我的队列并抓取第一个条目,这样我就可以按删除按钮将其删除,但是偷看显示的是最后一个条目,而不是第一个条目。我试过偷窥和偷窥Java Queue Peek()保持返回最新条目,而不是第一次输入,java,queue,Java,Queue,我试图偷看我的队列并抓取第一个条目,这样我就可以按删除按钮将其删除,但是偷看显示的是最后一个条目,而不是第一个条目。我试过偷窥和偷窥 private int maxSize; private String[] queArray; private int front; private int rear; private int nItems; public String FN,LN,PN,Email,Addres,State,Zip,LicensePlate; public Queue(Stri
private int maxSize;
private String[] queArray;
private int front;
private int rear;
private int nItems;
public String FN,LN,PN,Email,Addres,State,Zip,LicensePlate;
public Queue(String fN, String lN, String pN, String email, String address, String state, String zip,
String licensePlate) {
maxSize++;
queArray = new String[maxSize];
front = 0;
rear = -1;
nItems = 0;
FN = fN;
LN = lN;
PN = pN;
Email = email;
Addres = address;
State = state;
Zip = zip;
LicensePlate = licensePlate;
}
public void insert(String FN, String LN, String PN, String Email, String Addres, String State, String Zip,
String LicensePlate) {
String input = "{" + "First Name: "+ FN + ", " +" Last Name: "+ LN +", "+" Phone Number: "+ PN + ", " +" Email: "+ Email +", " +" Address: "+ Addres + ", " +" State: "+ State +", "+" Zip: "+ Zip + ", " +" LicensePlate: "+ LicensePlate + "}";
if (rear == maxSize - 1)
rear = -1;
queArray[++rear] = input;
nItems++;
}
public String peekFront() {
return queArray[front++];
}
public String peek() {
return queArray[front];
}
通过将maxSize++更改为maxSize=5来修复此问题。如果我没有弄错的话,这种情况正在发生,因为您的maxSize机制 maxSize永远不会被设置为一个仅随
maxSize++
递增一次的数字。所以maxSize总是1
现在,当已经插入一个元素时,将调用以下代码,因为rear现在是0,maxSize-1=1-1
if(后==maxSize-1)
后部=-1;
queArray[++后方]=输入代码>
您只是在覆盖数组中的唯一元素
<>而不是编写自己的基于数组的队列来保存数据,考虑为数据使用自定义对象,并且已经实现的队列类似这是队列类中的代码吗?您能否提供一个简单的代码示例,说明如何使用它以及错误是什么?这是因为您使用front插入新元素。每次添加一个元素时,对前一个变量执行增量操作,使其始终指向添加到队列中的最后一个元素。如果需要第一个变量,则需要第二个变量“head”,它位于队列的前面元素。因此,使用两个变量,一个用于处理此数据结构的尾部,另一个用于头部。前者在队列末尾插入元素时,第二个用于检索操作。我应该使类本身不使用导入,希望我可以更简单。我想你是对的,我将maxsize++更改为一个数字,现在一切正常谢谢