注意:我没有找到这个特定问题的答案。
背景故事:
我最近学会了魔术师在手中使用的油和水的例行程序(这并不意味着我实际上可以做到这一点,但我已经完成了机制)。对于那些不熟悉这个例程的人来说,需要三张红牌和三张黑牌。这些卡最初放在一起,红色,黑色,红色,黑色,红色,黑色。在技巧结束时,所有的红色都重新组合在一起,所有的黑色都重新组合在一起。
我已经用Java成功编写了这个代码,但我无法解释为什么它正确地执行它。我认为我的逻辑存在问题,但我需要进行一些验证。
以下是我目前的代码:
int[] mixed = {1,2,1,2,1,2};
System.out.println("Before Sort: ");
for (int element : mixed){
System.out.println("Element: " + element);
}
for (int element : mixed){//this for loop moves all but the first and last element.
// for (int element=0;element < mixed.length-1;element++){// this for loop reverses order
int temp = mixed[element];
mixed[element]=mixed[element+1];
mixed[element+1]=temp;
}
if ((mixed[0]==1) && (mixed[5]==2)){//this swaps the first and last elements after using an enhanced for loop
int temp = mixed[0];
mixed[0] = mixed[5];
mixed[5] = temp;
}
System.out.println("After sort: ");
for (int element : mixed){
System.out.println("Element: " + element);
}
请务必阅读代码中的注释,因为这是我的wtf时刻。我的目标是能够让我的高中学生在到达阵列时这样做。我希望能够在介绍数组时介绍这个。任何帮助将不胜感激。
答案 0 :(得分:1)
您正在使用数组元素作为所做开关的索引来迭代数组。
你只做过两个相同的开关。
这不起作用;你必须在最后做一个手动开关。此手动开关在其他情况下不起作用。
正确的方法是:
array 1 2 1 2 1 2
index 0 1 2 3 4 5
开关:
只有3个开关,因此循环应从0开始,以数组长度/ 2结束。