我正在为正在处理的程序创建测试驱动程序,由于某种原因,我的remove方法无法正常工作。我找不到问题。每当我删除某些内容时,它都会正确输出true。但是,每当我删除矢量堆栈中未包含的内容时,就会严重出错。任何人都可以看一下,看看有什么吗?我试图放一些东西来确定是否找到了该值(类似于contains方法),但我也无法弄清楚。
这是运行它所需的一切:
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;
}
这是将其与之进行比较的contains方法。 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)