我已经完成了几乎所有完美洗牌的java代码。我只是在与错误作斗争:“线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:在cards_shuffle.main(cards_shuffle.java:72)处长度26的索引26超出范围”此错误指的是行:
Output:
洗牌后的上半部分:
黑桃 4 10 颗钻石 黑桃 8 钻石王牌 红心4 红心 jack 红桃皇后 黑桃皇后 4 颗钻石 黑桃 jack 红心国王 红心5 红心10 黑桃 9 2 俱乐部 黑桃 6 钻石之王 3 俱乐部 黑桃 7 钻石 jack 红心3 7 颗钻石 3 颗钻石 红心9号 梅花 A 5 颗钻石
洗牌后的下半部分:
红心6 红心7号 10 俱乐部 红心王牌 红心2 钻石皇后 6 梅花 8 颗钻石 黑桃K 黑桃 5 梅花皇后 9 梅花 黑桃 2 黑桃 3 9 颗钻石 黑桃王牌 黑桃 10 俱乐部之王 7 俱乐部 2 颗钻石 6 颗钻石 4 俱乐部 红心 8 5 梅花 8 梅花 梅花 jack
洗牌:
红心6
I have just included the 6 of Hearts once but it prints out 52 times.
Any help with this error would be greatly appreciated.
最佳答案
您的i
变量超出了top_half
的数组范围,因为它在内部循环中增加了bottom_half.length
次。
另外,您根本不应该增加变量i
,因为您想从上到下填充卡片力。否则,您应该为其使用单独的索引。
尝试
int i = top_half.length - 1;
int j = bottom_half.length - 1;
int index = 51;
while (index >= 0) {
card_force[index--] = top_half[i--];
card_force[index--] = bottom_half[j--];
}
关于java - 卡力技巧。如何完成完美的洗牌或里弗洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302097/