我寫了下面的代碼片段:爲什麼這個輸入不是放在一個2維數組中,只輸出一個Java值?
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()的輸出是正確的。由於某種原因,它只能放在數組中。 (因此,二維數組,數組中的數組)。
請澄清你的意圖。您正在迭代1d數組並詢問爲什麼它不是2d。 – Dmitry 2013-02-28 00:06:01
歡迎來到SO!如果您發佈一個完整的程序來重現您的問題,它將會非常有幫助。它應該足夠讓任何人都可以簡單地複製並粘貼然後編譯它(除了可能是import語句)。它也不應該包含任何與您的問題無關的代碼。如果你這樣做,你會得到更快的幫助。 – 2013-02-28 00:06:01
rotate()代碼請 – user1428716 2013-02-28 00:08:47