0

我创建了一种方法,将 3 张星球大战门票随机放入一组 7 张门票中,以创建总共 10 张门票。我还必须创建一个方法,将票分配给“Line”中的下一个人。当我尝试将其打印出来时,它会抛出一个 EmptyStackException,我不确定为什么。有没有办法我必须将堆栈移动到主要方法?

到目前为止,这是我的代码,我只是想知道我哪里出错了。请指导我正确的方向。谢谢你。

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class movieRaffle {

public static void main(String[] args) {

    Queue<String> queue = new LinkedList<String>();
    queue.offer("Megan");
    queue.offer("Kate");
    queue.offer("Conan");
    queue.offer("Jay");
    queue.offer("Bert");
    queue.offer("Ernie");
    queue.offer("Mickey");
    queue.offer("Goofy");
    queue.offer("Optimus");
    queue.offer("Megatron");

    Stack<String> ticketList = new Stack<>();

    while(queue.size() > 0)
    System.out.println(queue.remove() + " wins tickets to " + ticketList.pop());

}

public static void ticketList() {
    Stack<String> tickets = new Stack<String>();
    tickets.push("Olympus Has Fallen");
    tickets.push("Jurassic Park");
    tickets.push("The Patriot");
    tickets.push("Matrix");
    tickets.push("Gettysburg");
    tickets.push("Gods and Generals");
    tickets.push("White House Down");
    tickets.add((int) (Math.random() * 10), "Star Wars");
    tickets.add((int) (Math.random() * 10), "Star Wars");
    tickets.add((int) (Math.random() * 10), "Star Wars");
}

}
4

3 回答 3

0

您已经创建了一个空的 Stack<String> ticketList = new Stack<>(); ,但您没有调用 ticketList() 方法来为其添加值。

你需要这样做

public static void main(String[] args) {

    Stack<String> ticketList = new Stack<>(); 
    ticketList(Stack<String> tickets ) ; calling the method 
}

请像下面一样更改您的方法并Stack<String> tickets = new Stack<String>();在方法中删除。

public static void ticketList(Stack<String> tickets ) {

}
于 2013-10-30T02:59:43.520 回答
0

问题是现在你正在创建一个空的Stack. 您的ticketList()方法应该返回Stack它创建的。

public static Stack<String> ticketList() {
    ...
    ...
    return tickets;
}

然后,当您Stack在您的 中创建您的时main,您可以这样做:

Stack<String> ticketList = ticketList();
于 2013-10-30T03:02:02.173 回答
0

return type将ofticketList()方法更改为Stack<String>

public static Stack<String> ticketList() {
        Stack<String> tickets = new Stack<String>();
        ...
        return tickets;
    }

然后将返回的值分配给ticketList您的 main 方法:

Stack<String> ticketList = ticketList();
于 2013-10-30T03:03:09.740 回答