2012-10-05 37 views
2

我在做,我宣佈一個堆棧並將其命名爲「字」的程序。我用這個代碼,就像這樣:爪哇 - 表達式必須是一個數組類型,但它解決了堆放<String>

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

,但是當我試圖用這個代碼重新洗牌的話在裏面,似乎它是一個堆棧錯誤:

Collections.shuffle(words); 
int mistakes = 0; 
final String CORRECT_WORD= words[0]; 

如何解決這個錯誤?

+0

什麼是具體的錯誤?你應該提供錯誤味精,否則我們必須明白這一點... – tuergeist

+1

@tuergeist的錯誤是在標題。 –

+0

@ Code-Guru:Ehm。是。 OK ......這太obviuos我:) – tuergeist

回答

8

如果需要從words的第一個值,只需使用pop()

final String CORRECT_WORD = words.pop(); 

VectorelementAt(0)

final String CORRECT_WORD = words.elementAt(0); 
3
final String CORRECT_WORD= words[0]; 

Java集合不支持類似C++的數組語法。相反,您必須使用API​​中的方法。在這種情況下,你需要使用[Stack.pop()][1]

final String CORRECT_WORD= words.pop(); 

Java API docs是一個非常有用的工具,它會告訴你什麼方法可爲每個接口和類。由於您使用的是Stack類,因此您應該熟悉docs for Stack

+0

它不應該是POP()? OP是不是在談論List? – Thousand

+0

@千是的,它應該是'pop()'。我很快提交了我的答案,然後在檢查API文檔後再回到編輯狀態。 –

2

堆棧設計爲僅允許您訪問添加的最後一個元素(即它是一個後進先出法,後進先出),這使得洗牌的問題。

如果你想洗牌的話,把它們放入一個列表(如一個ArrayList),洗牌它們,然後將它們放到一個堆棧或隊列一旦被打亂。

+0

由於'Stack'實現'List'和'Collection.shuffle()''接受參數List',它可能是一個很好的假設,即API作者已經處理混排LIFO結構的「有問題」的部分。當然,根據具體情況,任何回頭看這個的人都可能會感到困惑。 –

相關問題