为什么我的堆栈为空? EmptyStackException

时间:2019-06-02 23:08:55

标签: java stack

目前,我正在使用Java中的Stacks。 我面临的问题是我想创建一个堆栈,用于存储“ candy”类型的项目。 我想在Producer.java中添加“ candy” 但是当我运行下面显示的代码时,我得到了错误:

  

线程“ main”中的异常java.util.EmptyStackException

     

在java.util.Stack.peek(Stack.java:102)

     

在java.util.Stack.pop(Stack.java:84)

     

在app.fachinformatiker.myMashup.Model.Consumer。(Consumer.java:10)

     

在app.fachinformatiker.myMashup.Main.Main.initializeConsumers(Main.java:84)

     

在app.fachinformatiker.myMashup.Main.Main.main(Main.java:42)

这些是对应的行

Consumer.java:10

.content

Main.java:84

String Candy = candyStack.pop();

Main.java:42

consumerList.add(new Consumer(candyStack));

我不明白为什么我的堆栈没有正确填充。

在下面,您会发现我的代码片段。 如果要下载我的全部代码并在您选择的IDE中运行它(我使用IntelliJ IDEA),这是指向GitHub上存档的直接链接(特定提交):https://github.com/fachinformatiker/myMashup/archive/97e3ffb.zip

以下是我的代码段:

在我的Main.java中

 initializeConsumers();

在我的Producer.java中

private static final Stack<String> candyStack = new Stack<>();
private static final ArrayList<Producer> producerList = new ArrayList<>();
private static final ArrayList<Consumer> consumerList = new ArrayList<>();

...

private static void startProducers() {
    for (int i = 0; i < producerList.size(); i++) {
        System.out.println("I would start producer Nr. " + i + " now.");
        producerList.get(i).start();
    }
}

private static void startConsumer() {
    for (int i = 0; i < consumerList.size(); i++) {
        Debug.gebeInfoAus("I would start consumer Nr. " + i + " now.");
        consumerList.get(i).start();
    }
}

private static void initializeProducers() {
    if (ArgController.istAusgewertet) {
        Debug.gebeInfoAus("Producer istAusgewertet");
        return;
    }
    for (int i = 0; i < ArgController.getAnzahlProduzenten(); i++) {
        Debug.gebeInfoAus("Producer Nr. " + i + " added to candyStack");
        producerList.add(new Producer(candyStack, i));
    }
}

在我的Consumer.java中

public class Producer {

    private Candy candy = new Candy();
    private String myCandy;

    int hell = candy.getHell();
    String hope = candy.getHope();

    public Producer(Stack<String> candyStack, int i) {
        myCandy = i + ";" + hell + ";" + hope;
        candyStack.push(myCandy);
        Debug.gebeInfoAus(myCandy);
    }

    public void start() {

    }
}

0 个答案:

没有答案
相关问题