Java中一个数组的Random.choice等价物

5

以下是我在Python中实现random.choice的示例。

available_cards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Queen', 'King', 'Jack', 'Ace']
random_computer_card = random.choice(available_cards)
print random_computer_card

想知道这段代码在Java中的等效写法。显然,我在示例中没有包含import语句。

提前感谢您的帮助 :)

3个回答

13
将所有内容转换为字符串,并像下面的数组一样定义它们,通过生成随机数从索引中访问:
String[] available_cards = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Queen", "King", "Jack", "Ace"};  
java.util.Random random = new java.util.Random();
int random_computer_card = random.nextInt(available_cards.length);
System.out.println(available_cards[random_computer_card]);

你好,感谢回复。如果需要,那么导入语句是否仍然需要使用?如果需要,那是否与Python中的相同? - PythonBoy69
@PythonBoy69 请看上面。这取决于您是需要导入还是想要使用完全限定的包(在Python中称为模块)名称。 - SMA

2

首先,我会创建一个枚举类型,因为这显然是一组预定义的常量值。

public enum Rank {
     ONE,
     TWO,
     ...,
     ACE;
}

然后在数组范围内生成一个随机数(使用nextInt(int bound)),并从枚举值的数组中获取相应的值。

Rank allRanks = Rank.values(); //get the array of ranks
int randomNum = new Random().nextInt(allRanks.length); //generate a random number in [0; allRanks.length-1]
Rank randomRank = allRanks[randomNum]; //get the random rank from the array

1

不,上面Almas的答案描述了如何处理这个字符串。 - beartech1
我现在意识到了,非常感谢你的回答,那个链接很棒。 - PythonBoy69

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接