次のコードを書きました。
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]
最初のものは回転していません。2枚目は回転などで数字のズレが見られます。この新しい数値配列は、何らかの理由で配列 res に保存されません。この場合、最後の出力は 2 番目の出力と同じである必要がありますが、何らかの理由で常に最後の出力の前 (33 から始まる) になります。間違いがわかりません、助けてください。
編集:申し訳ありません。これがrotate()のコードです:
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() からの出力は正しいので、私はそれが必要だとは思いませんでした。何らかの理由で配列に配置されないだけです。(したがって、2 次元配列、配列内の配列)。