2

Stack を宣言して「words」という名前のプログラムを作成しています。次のように、このコードを使用しました。

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 に答える