我有一个包含一些字符串的数组:
String[] funnyRiddles = { "1", "2", "3", "4" };
现在我尝试生成一个随机数并显示上面数组的内容(funnyRiddles[rand]
),但是当我显示{{{的所有值时,我想停止生成randoms 1}}数组,代码如下:
funnyRiddles
现在每1-2次点击一下,Random rnd = new Random();
int randomRiddle = 0;
int clickCounter = 0;
static ArrayList<Integer> passedQuestions = new ArrayList<Integer>();
final RiddlesHolder riddles = (RiddlesHolder) getActivity().getApplication();
askBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (txtAnswer.getText().toString().equals(riddles.getFunnyRiddlesAnswerByPos(randomRiddle))) {
passedQuestions.add(randomRiddle);
do {
if (clickCounter <= passedQuestions.size()) {
randomRiddle = rnd.nextInt(riddles.getFunnyRiddles().length);
clickCounter++;
} else {
Toast.makeText(getActivity().getApplication(),
"No more riddles!", Toast.LENGTH_SHORT).show();
//clickCounter++;
break;
}
} while (passedQuestions.contains(randomRiddle));
TextView text = (TextView) getActivity().findViewById(R.id.txtAnimalRiddle);
text.setText(riddles.getFunnyRiddlesByPos(randomRiddle));
/*Toast.makeText(getActivity().getApplication(),
riddles.getFunnyRiddlesByPos(randomRiddle), Toast.LENGTH_SHORT).show();*/
} else {
Toast.makeText(getActivity().getApplication(),
"Wrong answer!", Toast.LENGTH_SHORT).show();
}
}
});
显示出来。当没有剩下唯一值时,应该显示它。
我知道我在这里错过了一些逻辑,但我无法找到正确的方法。上面的代码可能是一个无用的废话,但这是我到目前为止所做的。
答案 0 :(得分:5)
如果我理解你的问题,你想以随机的顺序显示谜语。但你正在做的是从列表中显示四个随机谜语,这可能导致至少一个谜语被多次显示。
如果这种解释是正确的,最简单的解决方案可能是生成谜语数组的random permutation,然后按顺序显示它们。