Java - 表达式必须是数组类型,但它已解析为Stack <string> </string>

时间:2012-10-05 20:32:33

标签: java

我正在创建一个程序,我在其中声明了一个Stack,并将其命名为“words”。我使用了这段代码,如下:

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

但是当我尝试使用此代码对其中的单词进行随机播放时,会出现关于它的错误:

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

我该如何解决此错误?

3 个答案:

答案 0 :(得分:8)

如果您需要words中的第一个值,请使用pop()

final String CORRECT_WORD = words.pop();

Vector的{​​{1}}。

elementAt(0)

答案 1 :(得分:3)

final String CORRECT_WORD= words[0]; 

Java Collections不支持类似C ++的数组语法。相反,您必须使用API​​中的方法。在这种情况下,您需要使用[Stack.pop()][1]

final String CORRECT_WORD= words.pop(); 

Java API docs是一个非常有用的工具,可以告诉您每个接口和类有哪些方法可用。由于您使用的是Stack类,因此您应该熟悉docs for Stack

答案 2 :(得分:2)

堆栈旨在让您访问最后添加的元素(即它是LIFO,后进先出),这使得混乱成为问题。

如果要将这些单词混洗,将它们放入List(例如ArrayList)中,将它们混洗,然后在它们被洗牌后将它们放入堆栈或队列中。