2013-10-30 106 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歡迎您。 –