Программа на Java не выводится правильно - VectorStack - PullRequest
0 голосов
/ 21 октября 2019

Я создаю тестовый драйвер для программы, над которой я работаю, и по какой-то причине мой метод удаления не работает должным образом. Я не могу найти проблему. Всякий раз, когда я удаляю что-то, он выводит true правильно. Тем не менее, всякий раз, когда я удаляю что-то, не входящее в мои векторы, это плохо. Может кто-нибудь взглянуть на это и посмотреть, что случилось? Я попытался поместить что-то, что определило бы, было ли найдено значение или нет (аналогично методу содержимого), но я также не смог выяснить это.

Вот все, что вам нужно для его запуска:

https://pastebin.com/6YD6RvsB это тестовый драйвер.

System.out.println("Now we removin' -4 (should return false): " + s.remove(14));

Это строка с ошибкой. https://pastebin.com/jQWZS1KA это VectorStack.

https://pastebin.com/8Hh5nK3C здесь это StackSort.

public boolean remove(T obj) {
    if (obj == null)
       return false;
    boolean found = false;

    findStackLocation(obj);
    store.pop();
    size--;
    found = true;

    emptyTempStack();
    return found;
}

это метод удаления, который выдает ошибку.

    public boolean contains(T obj) {
    if (obj == null)
       return false;
    boolean found = false;

    findStackLocation(obj);

    while (!found && !store.empty() && store.peek().compareTo(obj) == 0) {
        if (store.peek().equals(obj))
        found = true;
        else
        temp.push(store.pop());

        emptyTempStack();  
    }
     return found;
}

Это метод содержимого для сравнения. https://pastebin.com/6SyHhqkm а вот и стек.

Спасибо за любую помощь, которую вы, ребята, можете мне дать!

Отслеживание стека:

Exception in thread "main" java.util.EmptyStackException
at VectorStack.pop(VectorStack.java:51)
at StackSort.remove(StackSort.java:60)
at StackDriver.main(StackDriver.java:26)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...