java - 如何使 int 在随机生成时不被使用两次?

标签 java android eclipse

我已经为 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/

相关文章:

java - Spring Boot/Angular 4 - 应用程序中的路由命中服务器

java - 单例上的同步访问

android - 如何知道文本在 Jetpack Compose 上是否可见?

android - 屏幕旋转android后背景颜色变化

android - 等待并发 GC 阻塞

java - 奇怪的 FileWriter 错误

java - 查找对象的类

java - Android 日历获取年份

eclipse - 如何在eclipse中导出Node.js并表达Project

java - 实现类似 Eclipse 的 OSGi 启动器