【问题标题】:Looking for a better way to get random items (One that allows for more options)寻找一种更好的方式来获得随机物品(一种允许更多选择的方式)
【发布时间】:2016-01-03 19:33:45
【问题描述】:

目前,我在我的 android 应用程序中使用了很多这样的功能。

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

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

我可以使用 switch 和 case,但是你必须硬编码 case 的数量,所以没有机会动态地添加到列表中(我的长期目标),而且它为每个选项引入了很多额外的文本。 if 语句也有同样的问题。

那么有没有一种方法可以从选项列表中随机选择并在选择某些选项时根据需要执行代码,简单而有效?

【问题讨论】:

  • 我认为答案就在“...如果选择了某些选项...”这个问题中,否则可能需要修改代码架构。
  • 当然,不要使用字符串,而是使用具有相关功能的枚举或类实例。基本上是命令或动作模式。
  • 很可能需要修改结构是的,但不确定要做什么,对java来说仍然是新的(很新)我嵌套了很多函数,例如如果需要颜色,我调用一个返回的函数将颜色作为字符串添加到字符串“wizard”+ colour() 不确定是否可以使用枚举列表完成(这些对我来说是新的,因此将在几秒钟内阅读它们)
  • 我突然想到我可以查看是否选择了向导,然后做额外的事情,只需检查字符串就会告诉我,还有很多我仍然不知道的 java 我想g 可能有更好的方法。

标签: java android random


【解决方案1】:

你有很多选择

让我列出我所知道的

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 来选择一个。

【讨论】:

  • 获取随机数不是问题,对于那里的混乱感到抱歉,它更像是存储我随机选择的内容的最佳方式,我希望我能更好地措辞......我假设是问题的一部分,在我使用字符串数组的那一刻,我发现 switch 有点笨拙,以后无法扩展(除非您知道确切的数字,否则无法加载用户提交的职业列表并将它们添加到选项中) ...数组怎么不允许我用代码做更多的事情然后吐出一个字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
相关资源
最近更新 更多