我正在制作一个程序,我在其中声明了一个堆栈并将其命名为“单词”。我使用了这段代码,如下所示:
Stack <String> words = new Stack<String>();
但是当我尝试使用此代码对其中的单词进行洗牌时,会出现一个关于它是堆栈的错误:
Collections.shuffle(words);
int mistakes = 0;
final String CORRECT_WORD= words[0];
我该如何解决这个错误?
我正在制作一个程序,我在其中声明了一个堆栈并将其命名为“单词”。我使用了这段代码,如下所示:
Stack <String> words = new Stack<String>();
但是当我尝试使用此代码对其中的单词进行洗牌时,会出现一个关于它是堆栈的错误:
Collections.shuffle(words);
int mistakes = 0;
final String CORRECT_WORD= words[0];
我该如何解决这个错误?
如果您需要来自 的第一个值words
,只需使用pop()
:
final String CORRECT_WORD = words.pop();
或Vector
的elementAt(0)
。
final String CORRECT_WORD = words.elementAt(0);
final String CORRECT_WORD= words[0];
Java 集合不像 C++ 等价物那样支持数组语法。相反,您必须使用 API 中的方法。在这种情况下,您需要使用[Stack.pop()][1]
:
final String CORRECT_WORD= words.pop();
Java API 文档是一个非常有用的工具,它将告诉您每个接口和类可以使用哪些方法。由于您使用的是 Stack 类,因此您当然应该熟悉Stack 的文档。
堆栈设计为只允许您访问添加的最后一个元素(即它是 LIFO,后进先出),这使得洗牌成为问题。
如果您想打乱单词,请将它们放入列表(例如 ArrayList),打乱它们,然后在打乱后将它们放入堆栈或队列中。