目前,我正在使用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() {
}
}