java - 如何从枚举生成随机值并将其放入数组中?

标签 java random enums

我有一个充满“项目”的枚举,我想生成该枚举的一个随机项目并将其放入我的库存中,该库存是我用数组制作的。该数组只能容纳 10 个整数。

public class InventoryEnums {
    public static void main (String[] args){

    int[] inventar = new int[9] // int array mit 10 Plätzen

    enum items {
        KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE, TOPGENESUNG, ANGEL, TOPSCHUTZ
    }

最佳答案

枚举应该以单数命名,并且应该以大写字母开头。

enum Item { KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE, TOPGENESUNG, ANGEL, TOPSCHUTZ }

我建议您设计一个比“Item”更具描述性的名称。

通过调用values获取所有枚举对象的数组。

Item[] allItems = Item.values() ;

生成一个随机数。使用该数字作为所有项目数组的索引。

int randomIndex = ThreadLocalRandom.current().nextInt( 0 , allItems.length ) ;  // ( inclusive , exclusive )
Item rando = allItems[ randomIndex ] ;

或者您可能打算对枚举的所有元素进行随机排序(洗牌)。如果是这样,请创建一个由数组支持的List。调用Collections.shuffle。对列表所做的更改也会影响后备阵列。这样数组就被打乱了。

Item[] allItems = Item.values() ;
List< Item > list = Arrays.asList( allItems );
Collections.shuffle( list );

更简单地说:

Item[] allItems = Item.values() ;
Collections.shuffle( Arrays.asList( allItems ) );

查看此code run live at Ideone.com .

[MONSTERBALL, TOPSCHUTZ, KARTE, FAHRRAD, VM03, MONSTERDEX, ANGEL, AMRENABEERE, TOPGENESUNG, HYPERHEILER]

关于java - 如何从枚举生成随机值并将其放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72291356/

相关文章:

r - 随机的矢量化并行选择?

java - 使用枚举和反射来调用类列表上的方法

java - 将硬编码数组值传递给构造函数

java - SQLRecoverableException : I/O Exception: Connection reset

scala - 随机连接两个数据框

algorithm - 随机算法的概率放大

java - 如何在构造函数中设置对象枚举类型?

java - 对 Java swing 应用程序的插件支持(如 Eclipse)

java - Maven 无法解析依赖关系

Java : How to tint this PNG programmatically?