我写了以下代码:
for (int i = 0; i < rounds; i++){
result = rotate(result);
res[i] = result;
}
System.out.println(Arrays.toString(res[1]));
然而,即使我监控旋转的输出,我仍然得到这个输出:
[87, 56, 119, 111, 111, 114, 100, 33, 49, 50, 51]
[56, 119, 111, 111, 114, 100, 33, 49, 50, 51, 87]
[119, 111, 111, 114, 100, 33, 49, 50, 51, 87, 56]
[111, 111, 114, 100, 33, 49, 50, 51, 87, 56, 119]
[111, 114, 100, 33, 49, 50, 51, 87, 56, 119, 111]
[114, 100, 33, 49, 50, 51, 87, 56, 119, 111, 111]
[100, 33, 49, 50, 51, 87, 56, 119, 111, 111, 114]
[33, 49, 50, 51, 87, 56, 119, 111, 111, 114, 100]
[33, 49, 50, 51, 87, 56, 119, 111, 111, 114, 100]
第一个是未旋转的;第二个旋转等等。你可以看到数字的变化。由于某种原因,这个新的数字数组没有保存在我的数组 res 中。在这种情况下,最后一个输出应该与第二个输出相同,但由于某种原因,它总是在最后一个输出之前(从 33 开始)。我看不到我的错误,请帮助我。
编辑:对不起。这是旋转()的代码:
public static byte[] rotate(byte[] a) {
//store initial array in a temporary variable
int Array = a[0];
int i;
for (i = 0; i < a.length - 1; i++) {
// Move each item up one spot
a[i] = a[i + 1];
}
// At the end of the array, put what was stored.
a[a.length -1] = (byte) Array;
System.out.println(Arrays.toString(a));
// You can't print the array itself, you print its elements
//System.out.println(a);
return (a);
我认为没有必要,因为 rotate() 的输出是正确的。由于某种原因,它只是没有被放置在数组中。(因此是二维数组,数组中的数组)。