質問と回答の 2 つの配列があります
String questions[] = {
"Q1?",
"Q2?",
"Q3?"};
String answers[] = {
"A1?",
"A2?",
"A3?"};
私はCollections.shuffle(Arrays.asList(questions);
各配列をシャッフルしていました。シャッフル後に同じ順序を維持するように各配列をシャッフルするにはどうすればよいですか?
質問と回答の 2 つの配列があります
String questions[] = {
"Q1?",
"Q2?",
"Q3?"};
String answers[] = {
"A1?",
"A2?",
"A3?"};
私はCollections.shuffle(Arrays.asList(questions);
各配列をシャッフルしていました。シャッフル後に同じ順序を維持するように各配列をシャッフルするにはどうすればよいですか?
インデックスを保持する新しい配列をシャッフルすることができます。そして、最初のインデックスから両方の配列から要素を取得します。
List<Integer> indexArray = Arrays.asList(0, 1, 2);
Collections.shuffle(indexArray);
String question = questions[indexArray.get(0)];
String answer = answers[indexArray.get(0)];
もちろん、他の回答が示唆するように、class
包含questions
を作成し、よりオブジェクト指向の方法になります。answers
そうすれば、現在のアプローチと比較して、List
またはを 1 つだけ維持する必要があります。array
3 arrays
質問と回答の両方を保持するためのクラスを作成すると、より簡単でオブジェクト指向のソリューションになります。
class QuestionAnswerPair {
private final String question;
private final String answer;
public QuestionAnswerPair(String question, String answer) {
this.question = question;
this.answer = answer;
}
}
その後:
QuestionAnswerPair[] questions = new QuestionAnswerPair[] {
// Put questions here
};
Collections.shuffle(Arrays.asList(questions));
クラスを作成し、QuestionAndAnswer
そのクラスの配列を使用します。
回答と質問をシャッフルする代わりに、質問/回答へのインデックスを持つ整数の追加の配列をシャッフルし、シャッフルされたインデックスを使用して対応する配列から質問と回答を抽出することができます。