Я создаю тестовый драйвер для программы, над которой я работаю, и по какой-то причине мой метод удаления не работает должным образом. Я не могу найти проблему. Всякий раз, когда я удаляю что-то, он выводит 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)