如何从枚举中生成随机值并将其放入数组中?
How to generate random value from enum and put it in array?
我得到一个充满“项目”的枚举,我想生成枚举的一个随机项目并将其放入我的库存中,这是我用数组制作的。该数组只有 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 }
我建议你设计一个比“项目”更具描述性的名称。
通过调用 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]
这不就是你想要的吗?
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]);
}
}
您可以获得一个介于 0 到 array.length 范围内的随机整数值,如
int rand = new Random().nextInt(items.values().length);
然后就可以得到enum
使用
生成的随机值
items.values()[rand];
然后在循环中使用它来填充数组。
还有一个方法:
enum Item {
KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE,
TOPGENESUNG, ANGEL, TOPSCHUTZ
}
Item[] inventar = Item.values();
Item singleItem = inventar[new Random().nextInt(inventar.length)];
我得到一个充满“项目”的枚举,我想生成枚举的一个随机项目并将其放入我的库存中,这是我用数组制作的。该数组只有 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 }
我建议你设计一个比“项目”更具描述性的名称。
通过调用 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]
这不就是你想要的吗?
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]);
}
}
您可以获得一个介于 0 到 array.length 范围内的随机整数值,如
int rand = new Random().nextInt(items.values().length);
然后就可以得到enum
使用
items.values()[rand];
然后在循环中使用它来填充数组。
还有一个方法:
enum Item {
KARTE, MONSTERBALL, MONSTERDEX, FAHRRAD, VM03, HYPERHEILER, AMRENABEERE,
TOPGENESUNG, ANGEL, TOPSCHUTZ
}
Item[] inventar = Item.values();
Item singleItem = inventar[new Random().nextInt(inventar.length)];