是否可以在 java 中使用主题标签?哈希标签是否有任何用途?
问问题
810 次
4 回答
1
for (k = 52; k<deck.length; k--){
这个循环不好构建。
如果从 k = 52 开始,则要循环直到 k 为 1(因为不需要与自己交换最后一个元素)。这样,k 不会小于 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);
会更正确
于 2013-11-07T01:22:34.870 回答
0
您发布的代码中的for
循环main()
从两个字符串数组构建卡片组并在构建它时将其打印出来,但是在构建卡片组之后,您实际上并没有对其进行洗牌。
在您最初的 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]);
}
于 2013-11-07T02:03:17.647 回答
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);
}
}
于 2013-11-07T01:46:57.483 回答
0
你在你的 for 循环中想要的是
for(k = deck.length - 1; k >= 0; k--)
你的索引是关闭的,它永远不会进入洗牌算法(我没有检查它的正确性仅供参考,所以你可能会遇到其他问题)
于 2013-11-07T01:20:22.033 回答