是否可以在java中使用hashtags?散列标签是否可用于任何目的?
答案 0 :(得分:1)
for (k = 52; k<deck.length; k--){
这个循环很糟糕。
如果从k = 52开始,你想循环直到k为1(因为不需要用自己交换最后一个元素)。这样,k将不会&lt;而deck.lenght和循环体将永远不会执行。
将其更改为
for (k = deck.length; k >= 1; k--){
然后,当你做这个时:
for (l = 0; l<k; l++){
k将为0,因此该循环将具有相同的问题,因此将其更改为
for (l = 0; l<deck.length; l++){
更进一步,Fisher-Yates shuffle将每个元素与集合中的其余元素交换,所以
int index = shuffle.nextInt(k-1);
会更正确
答案 1 :(得分:0)
你想要的for循环是什么
for(k = deck.length - 1; k >= 0; k--)
你的索引已关闭,它从不进入随机播放算法(我没有检查它的正确性,因此你可能遇到其他问题)
答案 2 :(得分:0)
正如我的评论所述,您可以简化shuffledDeck()
方法:
public static void shuffledDeck(String[] deck) {
List<String> shuffledDeck = new ArrayList(Arrays.asList(deck));
Collections.shuffle(shuffledDeck);
for (String card : shuffledDeck){
System.out.println(card);
}
}
答案 3 :(得分:0)
你发布的代码中for
内的main()
循环从两个字符串数组构建了套牌,并在构建它时将其打印出来,但是在构建套牌之后,你实际上并没有将它洗牌。 / p>
在你的初始for循环之后,你必须调用ShuffledDeck
(应该被称为shuffleDeck
然后循环遍历数组再次打印每张卡。基本上:
for (int i = 0; i<number.length; i++) {
// ...building the deck as before...
}
shuffleDeck(deck);
for (int i = 0; i<deck.length; i++) {
System.out.println(deck[i]);
}