我想用switch-case语句进行测验。在输入之前,我生成一个介于1和10之间的随机数。然后有10个案例,每个数字一个。在每一个中都有一个问题,意思是程序在开头显示一个随机问题。当问题得到正确回答时,我希望程序通过生成一个数字而不是已经被选中的数字来再次选择一个随机问题。我该怎么做?
答案 0 :(得分:1)
您不必为此使用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;
}
答案 1 :(得分:0)
您可以维护已生成的数字的ArrayList。在每一个新的随机生成中,
if(!myList.contains(newRandom)){
return newRandom;
}else{
//generate a new random and check
}