Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组算法,从“";“在洗牌中”;至;“退出洗牌”;_Java_Arrays_Algorithm_Shuffle - Fatal编程技术网

Java数组算法,从“";“在洗牌中”;至;“退出洗牌”;

Java数组算法,从“";“在洗牌中”;至;“退出洗牌”;,java,arrays,algorithm,shuffle,Java,Arrays,Algorithm,Shuffle,我试图复制下面的while循环,但它们都交错我的“卡”的方式不同 这是我目前使用的while循环,我的目标是重新制作这个循环,但要颠倒两个卡力阵列的顺序: while (index >= 0) { card_force[index--] = bottom_half[j--]; card_force[index--] = top_half[i--]; } 下面是我想做的while循环: while (index >= 0) { c

我试图复制下面的while循环,但它们都交错我的“卡”的方式不同

这是我目前使用的while循环,我的目标是重新制作这个循环,但要颠倒两个卡力阵列的顺序:

while (index >= 0) {

        card_force[index--] = bottom_half[j--];
        card_force[index--] = top_half[i--];
}


下面是我想做的while循环:

while (index >= 0) {
        card_force[index--] = top_half[i--];    
        card_force[index--] = bottom_half[j--];

}

但是,如果两个循环都存在,则原始循环工作,而第二个while循环根本不工作,导致在52行上返回“null”。我需要它来归还卡27,然后是卡1,然后是卡26,然后是卡2,依此类推

我有一个巨大的麻烦,似乎是一个简单的修复

以下是我当前的代码:


        String[] card_force = new String[52];
        String[] card_force2 = new String[52];
        int i = top_half.length - 1;
        int j = bottom_half.length - 1;
        int index = 51;


        // Card out shuffle
        while (index >= 0) {

        card_force[index--] = bottom_half[j--];
        card_force[index--] = top_half[i--];  
        }
        // Card in shuffle
        while (index >= 0) {
        card_force2[index--] = top_half[i--];
       card_force2[index--] = bottom_half[j--];
        }


        // Card out shuffle print
        System.out.println("\nCard Shuffle:\n");
        for (String card_force1 : card_force) {
           System.out.println(card_force1);
        }


        // Card in shuffle print
        for (String card_force1 : card_force2) {
           System.out.println(card_force1);
        }


}

代码运行时,将返回以下结果:


Card Shuffle:

Card number 1: King of Clubs
Card number 27: 10 of Spades
Card number 2: Jack of Clubs
Card number 28: King of Diamonds
Card number 3: 6 of Diamonds
Card number 29: 5 of Diamonds
Card number 4: Queen of Hearts
Card number 30: 4 of Hearts
Card number 5: 5 of Clubs
Card number 31: Queen of Diamonds
Card number 6: Ace of Hearts
Card number 32: 7 of Diamonds
Card number 7: 3 of Hearts
Card number 33: 9 of Hearts
Card number 8: 2 of Hearts
Card number 34: 10 of Diamonds
Card number 9: 10 of Clubs
Card number 35: Jack of Diamonds
Card number 10: 2 of Spades
Card number 36: 2 of Diamonds
Card number 11: 9 of Clubs
Card number 37: 2 of Clubs
Card number 12: 8 of Spades
Card number 38: 4 of Spades
Card number 13: 7 of Spades
Card number 39: Ace of Diamonds
Card number 14: 8 of Clubs
Card number 40: 9 of Spades
Card number 15: Jack of Hearts
Card number 41: 6 of Clubs
Card number 16: 3 of Diamonds
Card number 42: 7 of Hearts
Card number 17: 6 of Hearts
Card number 43: King of Hearts
Card number 18: 4 of Clubs
Card number 44: Ace of Clubs
Card number 19: 3 of Spades
Card number 45: 8 of Hearts
Card number 20: Ace of Spades
Card number 46: 5 of Hearts
Card number 21: 10 of Hearts
Card number 47: Jack of Spades
Card number 22: Queen of Clubs
Card number 48: 9 of Diamonds
Card number 23: Queen of Spades
Card number 49: 8 of Diamonds
Card number 24: 7 of Clubs
Card number 50: 5 of Spades
Card number 25: 4 of Diamonds
Card number 51: 6 of Spades
Card number 26: King of Spades
Card number 52: 3 of Clubs
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null


您需要在第二个循环之前重置
索引的值。当
索引
-1
时,第一个循环停止,当第二个循环检查该值时,该值仍然相同。因此,第二个循环甚至从未运行过。

您能稍微清理一下这段代码,使其不包含被注释掉的内容,只显示正在运行或失败的情况吗?我们可以放心地交换两行代码,但事实上,这是一种随意的方式,超出了必要的代码。清理缩进,扔掉注释,不要以使代码无法命名的方式进行复制,现在您将有好的代码供其他人查看。第二个
while
循环使用相同的
索引
var,第一个
while
循环完全使用了该索引。因此,第二个while循环将永远不会执行,而且
card\u force2
从未分配任何值,它只是一个数组,其中52个元素从未为每个元素分配任何值,因此,所有52个元素都是
null
。将
索引
重置为51,或者只使用
进行
loops@Mike“Pomax”Kamermans抱歉,这里有新消息,我想说的是lol。希望这能起到作用,我建议大家阅读一些关于如何调试代码的技巧。@BrógánMcShane:不,现在你让代码更难运行了。请确保它的形式(例如,人们复制粘贴您的代码,并让它通过
javac
,无需更改任何内容,然后在调用时运行)。此外,您仍然在显示这两种情况,这是毫无意义的:如果您不重置任何索引,为什么您希望第二个while循环能够工作呢?我建议您给出答案,并添加OP的代码和更正。