Почему мой стек пуст? EmptyStackException - PullRequest
0 голосов
/ 03 июня 2019

Сейчас я работаю со Стеками в Java. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу создать стек, в котором будут храниться предметы типа «конфеты». Я хочу добавить эту "конфету" в Producer.java Но когда я запускаю код, показанный ниже, я получаю ошибку:

Исключение в потоке "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

String Candy = candyStack.pop();

Main.java: 84

consumerList.add(new Consumer(candyStack));

Main.java: 42

 initializeConsumers();

Не понимаю, почему мой стек не заполнен должным образом.

Ниже вы найдете несколько фрагментов моего кода. Если вы хотите загрузить весь мой код и запустить его в IDE по вашему выбору (я использую IntelliJ IDEA), вот прямая ссылка на архив на GitHub (конкретный коммит): https://github.com/fachinformatiker/myMashup/archive/97e3ffb.zip

Вот некоторые фрагменты моего кода:

В моем Main.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));
    }
}

в моем Producer.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() {

    }
}

В моем Consumer.java

public class Consumer {

    public Consumer(Stack<String> candyStack) {
        String Candy = candyStack.pop();
        Debug.gebeInfoAus(Candy);
    }

    public void start() {

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...