Java Queue Peek () продолжает возвращать самую новую запись и не вводится первой - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь заглянуть в свою очередь и получить первую запись, чтобы затем я мог нажать кнопку удаления, чтобы избавиться от нее, однако при подсчете отображается последняя введенная запись вместо первой.Я пробовал смотреть и смотреть спереди.

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

1 Ответ

0 голосов
/ 14 ноября 2018

Если я не ошибаюсь, это происходит из-за вашего механизма maxSize.

maxSize никогда не устанавливается в число только один раз, увеличенное на maxSize++.Таким образом, maxSize всегда равно 1.

Теперь, когда один элемент уже вставлен, вызывается следующий код, потому что задний элемент теперь равен 0, а maxSize-1 = 1-1.

if (rear == maxSize - 1) rear = -1; queArray[++rear] = input;

Вы просто перезаписываете единственный элемент в массиве.

Вместо того, чтобы писать собственную очередь на основе массива, в которой хранятся ваши данные, рассмотрите возможность использования пользовательского объекта для ваших данных и уже реализованной очереди, такой как java.util.Queue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...