首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Switch语句:随机生成器

Switch语句:随机生成器
EN

Stack Overflow用户
提问于 2016-01-30 19:51:20
回答 2查看 669关注 0票数 0

我想用switch-case语句做一个测验。在输入它之前,我生成一个介于1和例如10之间的随机数。然后有10种情况,每个数字一个。在它们中的每一个都有一个问题,这意味着程序在开始时显示一个随机问题。当问题被正确回答时,我希望程序通过生成一个数字来再次随机选择一个问题,而不是已经选择的那个。我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2016-01-30 19:56:10

为此,您不必使用switch。尝试以下代码。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-01-30 19:58:35

您可以维护已经生成的号码的ArrayList。在每一个新的随机生成中,

代码语言:javascript
复制
if(!myList.contains(newRandom)){
    return newRandom;
}else{
    //generate a new random and check
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35101425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档