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

发布于 2025-01-30 14:05:36 字数 370 浏览 2 评论 0原文

我得到了一个充满“项目”的枚举,我想生成一个枚举的随机项目,然后将其放入我的库存中,我是用一个数组制成的。阵列只有10个int的空间。

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
    }

I got an enum which is filled with "items" and I want to generate one random item of the enum and put it into my inventory, which I made out of an array. The array only has room for 10 ints.

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
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

南城追梦 2025-02-06 14:05:36

枚举应在单数中命名,并应从大写字母开始。

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

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

通过调用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 ) );

请参阅此代码在iDeone.com 中实时运行。

[Monsterball,Topschutz,Karte,Fahrrad,VM03,Monsterdex,Angel,Amrenabeere,Topgenesung,HyperHeiler]

An enum should be named in the singular, and should start with an uppercase letter.

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

And I suggest you work at devising a more descriptive name than “Item”.

Get an array of all the enum objects by calling values.

Item[] allItems = Item.values() ;

Generate a random number. Use that number as the index into your array of all items.

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

Or perhaps you meant to randomly sort (shuffle) all the elements of the enum. If so, make a List backed by the array. Call Collections.shuffle. Changes made to the list also affect the backing array. So the array is shuffled.

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

More briefly:

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

See this code run live at Ideone.com.

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

酒废 2025-02-06 14:05:36

您可以获得一个随机整数值,该值在范围0到array.length。然后

int rand = new Random().nextInt(items.values().length);

,您可以获取使用您生成的随机值的enum

items.values()[rand];

然后在循环中使用它来填充数组。

You can get a random integer value that is in the range 0 to array.length as

int rand = new Random().nextInt(items.values().length);

Then you can get the enum for the random value generated using

items.values()[rand];

You then use this in a loop to fill the array.

歌枕肩 2025-02-06 14:05:36

这不是你想要的吗?

public class App {
    public static void main(String[] args) {
        Random random = new Random();

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

        items[] inventar = items.values();

        int index = random.nextInt(inventar.length);

        System.out.println(inventar[index]);

    }
}

Isn't this what you want?

public class App {
    public static void main(String[] args) {
        Random random = new Random();

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

        items[] inventar = items.values();

        int index = random.nextInt(inventar.length);

        System.out.println(inventar[index]);

    }
}
北斗星光 2025-02-06 14:05:36

还有另一种方法:

  enum Item {
        KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE, 
     TOPGENESUNG, ANGEL, TOPSCHUTZ
   }
   Item[] inventar = Item.values();
   Item singleItem = inventar[new Random().nextInt(inventar.length)];
  

There is another way:

  enum Item {
        KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE, 
     TOPGENESUNG, ANGEL, TOPSCHUTZ
   }
   Item[] inventar = Item.values();
   Item singleItem = inventar[new Random().nextInt(inventar.length)];
  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文