Java程序无法正确输出-VectorStack

时间:2019-10-21 01:44:16

标签: java debugging

我正在为正在处理的程序创建测试驱动程序,由于某种原因,我的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)

0 个答案:

没有答案