只是为了好玩......绝对是prev。解决方案有效,但是这个解决方案可以在没有temp
变量的情况下完成相同的工作:
public static void main(String[] argv) {
char[] a1 = { 'h', 'e', 'l', 'l', 'o' };
char[] a2 = { 'w', 'o', 'r', 'l', 'd' };
Random rand = new Random();
for (int n = 0; n < 2; n++) {
int indexToSwap = rand.nextInt(a1.length);
System.out.println("Swap " + indexToSwap);
System.out.println("Before A1 " + toString(a1) + ", A2 " + toString(a2));
a1[indexToSwap] ^= a2[indexToSwap];
a2[indexToSwap] ^= a1[indexToSwap];
a1[indexToSwap] ^= a2[indexToSwap];
System.out.println(" After A1 " + toString(a1) + ", A2 " + toString(a2));
}
}
private static String toString(char[] a) {
StringBuilder sb = new StringBuilder();
for (char c : a) {
sb.append(", ").append(c);
}
return "[" + sb.toString().substring(1).trim() + "]";
}
对我来说,它产生了以下输出:
Swap 4
Before A1 [h, e, l, l, o], A2 [w, o, r, l, d]
After A1 [h, e, l, l, d], A2 [w, o, r, l, o]
Swap 2
Before A1 [w, e, l, l, o], A2 [h, o, r, l, d]
After A1 [w, e, r, l, o], A2 [h, o, l, l, d]