java - 卡力技巧。如何完成完美的洗牌或里弗洗牌

标签 java for-loop intellij-idea indexoutofboundsexception

我已经完成了几乎所有完美洗牌的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/

相关文章:

java - 关于eclipse性能缓慢的问题

c++ - 减慢for循环的速度

javascript - 如何将选定的日期从日期选择器获取到后端的方法

java - 无法解决 FirebaseOptions.Builder().setCredentials()

Java BufferedReader ,重置读取器

javascript - 为数组中的对象分配优先级值

java - 创建一个 for 循环等待方法返回 true

java - IntelliJ 不显示 hadoop 错误

android - FacebookSDK 找不到资源(Intellij idea)

java - 对于具有相同行为但类常量不同的两个类,推荐的模式是什么?