我想用switch-case语句做一个测验。在输入它之前,我生成一个介于1和例如10之间的随机数。然后有10种情况,每个数字一个。在它们中的每一个都有一个问题,这意味着程序在开始时显示一个随机问题。当问题被正确回答时,我希望程序通过生成一个数字来再次随机选择一个问题,而不是已经选择的那个。我该怎么做?
发布于 2016-01-30 19:56:10
为此,您不必使用switch。尝试以下代码。
public void play() {
range = new ArrayList<>();
range.addAll(IntStream.rangeClosed(0, questions.size() - 1).boxed().collect(Collectors.toList()));
//Assuming 'questions' is an array list of questions
int index = getQnNumber(); // use this to get a valid question index which is not yet asked
if(index == -1) //means game over
System.out.println("Completed");
else
askQuestion(index);
}
private int getQnNumber() {
int size = range.size();
if(size < 1)
return -1;
Random r = new Random();
int index = r.nextInt(size);
int questionNumber = range.get(index);
range.remove(index);
return questionNumber;
}发布于 2016-01-30 19:58:35
您可以维护已经生成的号码的ArrayList。在每一个新的随机生成中,
if(!myList.contains(newRandom)){
return newRandom;
}else{
//generate a new random and check
}https://stackoverflow.com/questions/35101425
复制相似问题