2

我正在制作一个程序,我在其中声明了一个堆栈并将其命名为“单词”。我使用了这段代码,如下所示:

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

但是当我尝试使用此代码对其中的单词进行洗牌时,会出现一个关于它是堆栈的错误:

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

我该如何解决这个错误?

4

3 回答 3

8

如果您需要来自 的第一个值words,只需使用pop()

final String CORRECT_WORD = words.pop();

VectorelementAt(0)

final String CORRECT_WORD = words.elementAt(0);
于 2012-10-05T20:36:20.410 回答
3
final String CORRECT_WORD= words[0]; 

Java 集合不像 C++ 等价物那样支持数组语法。相反,您必须使用 API 中的方法。在这种情况下,您需要使用[Stack.pop()][1]

final String CORRECT_WORD= words.pop(); 

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

于 2012-10-05T20:35:34.000 回答
2

堆栈设计为只允许您访问添加的最后一个元素(即它是 LIFO,后进先出),这使得洗牌成为问题。

如果您想打乱单词,请将它们放入列表(例如 ArrayList),打乱它们,然后在打乱后将它们放入堆栈或队列中。

于 2012-10-05T20:37:00.150 回答