我已经为 Android 编写了一个简单的问答游戏,目前我遇到了问题在显示后不出现的问题,i.o.我不想让它问我同样的问题两次..
这是我使用的方法
private void QBegin() {
/*
* Gets a random question
*/
question = (TextView) findViewById(R.id.question);
String[] types = { "Question one",
"Question two",
"Question three",
"Question four",
"Question five"};
Random random = new Random();
int qType = random.nextInt(types.length);
question.setText(types[qType]);
getAnswers(qType); //gets four answers
}
我不确定这是否有效,但是,如果我添加类似的内容会怎么样
编辑:不起作用..
int i = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(qType);
i++;
if(list.contains(qType) && i != types.length + 1){
return;
} else {
answerCounter.setText("Hit the bricks pal, you're done..");
}
编辑2:被告知要添加这样的东西,但我不知道我现在应该用它做什么..
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(types.length);
Collections.shuffle(list);
if(!list.contains(qType)){
// help please, as I have no idea on what I should be doing!
}
最佳答案
最简单的方法是生成一个包含您想要使用的所有可能数字的 ArrayList
,并使用 Collection.shuffle
对它们进行打乱。 。然后只需迭代列表即可。
编辑:您的问题现在确实不清楚,因为您已经说过您不希望问题按随机顺序排列...而您的示例代码似乎试图以随机顺序提出问题。无论如何...这就是我的建议:
List<Integer> indexes = new ArrayList<Integer>();
for (int i = 0; i < types.length; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
for (Integer index : indexes) {
question.setText(types[index]);
getAnswers(index);
// Now do something else? It's unclear...
}
关于java - 如何使 int 在随机生成时不被使用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908686/