寻找更好的方法来获取随机物品(一个允许更多选项)

时间:2016-01-03 19:33:46

标签: java android random

我在Android应用程序中使用了很多这样的功能。

public String class5e() {
    String[] data = {
            "barbarian",
            "bard",
            "cleric",
            "druid",
            "fighter",
            "monk",
            "paladin",
            "ranger",
            "rogue",
            "sorcerer",
            "warlock",
            "wizard"
    };
    return data[randInt(0, data.length)];
}

这对我的大多数应用程序来说都很棒,但是我需要做更多的事情,例如我想让它在每次选择向导选项时添加到向导数据库中,我可以制作一个wizzard将向导作为字符串返回并执行所有数据库的函数等,以便在选择向导时执行需要完成的操作....只有这样才能工作,如果我这样做,那么在数组时设置向导代码无论选择哪个选项,都会被处理。

我可以使用开关和案例,但是你必须对案件数量进行硬编码,因此没有机会动态地调整列表(我的长期目标)以及它为每个选项引入了大量额外的文本。与if语句相同的问题。

有没有办法随机选择一个选项列表并根据需要执行代码,如果选择某些选项,那么简单而有效?

1 个答案:

答案 0 :(得分:0)

你有很多选择

让我列出我所知道的内容

import java.util.*;
import java.lang.*;
import java.util.concurrent.ThreadLocalRandom;

class Rextester
{  
    public static void main(String args[])
    {
        String[] data = {
            "barbarian",
            "bard",
            "cleric",
            "druid",
            "fighter",
            "monk",
            "paladin",
            "ranger",
            "rogue",
            "sorcerer",
            "warlock",
            "wizard"
        };
        //Option 1
        Random random = new Random();
        String strRandom = data[random.nextInt(data.length)];
        System.out.println("item [1]: "+ strRandom);
        //Option 2
        strRandom = data[ThreadLocalRandom.current().nextInt(data.length)];
        System.out.println("item [2]: "+ strRandom);
        //Option 3
        strRandom = data[(int)(Math.random()*data.length)];
        System.out.println("item [3]: "+ strRandom);
    }
}

检查我的实验:http://rextester.com/KTD88460

评论后编辑

如果您正在寻找动态增长的内容,请使用ArrayList或查看Collection Framework以选择一个。