2013-10-30 72 views
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"); 
} 

} 

回答

0

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

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

然后,当你创建你Stackmain,你可以做这样的:

Stack<String> ticketList = ticketList(); 
+0

谢谢你的工作! – user2929005

0

你creaed空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) { 

} 
+0

当我做 ticketList(堆栈门票); 它成为一个未解决的编译问题。 – user2929005

+0

@ user2929005更新了答案 – Prabhakaran

0

变化ticketList()方法Stack<String>return type

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

,然后分配返回值为ticketList您的主要方法:

Stack<String> ticketList = ticketList(); 
+0

谢谢你的工作与弗朗西斯所说的一样。 – user2929005

+0

@ user2929005欢迎您。 –