2012-10-05 33 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结构的“有问题”的部分。当然,根据具体情况,任何回头看这个的人都可能会感到困惑。 –

相关问题