2013-02-28 58 views
-1

我寫了下面的代碼片段:爲什麼這個輸入不是放在一個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()的輸出是正確的。由於某種原因,它只能放在數組中。 (因此,二維數組,數組中的數組)。

+2

請澄清你的意圖。您正在迭代1d數組並詢問爲什麼它不是2d。 – Dmitry 2013-02-28 00:06:01

+2

歡迎來到SO!如果您發佈一個完整的程序來重現您的問題,它將會非常有幫助。它應該足夠讓任何人都可以簡單地複製並粘貼然後編譯它(除了可能是import語句)。它也不應該包含任何與您的問題無關的代碼。如果你這樣做,你會得到更快的幫助。 – 2013-02-28 00:06:01

+0

rotate()代碼請 – user1428716 2013-02-28 00:08:47

回答

2

看看你的旋轉實現。如果它沒有爲結果分配一個新數組,那麼'res'中的每個引用都將指向同一個數組對象。

+0

非常感謝!將數組的副本複製到新數組解決了它! – Sicesc 2013-02-28 22:25:31

0

對不起。這裏是代碼旋轉():

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()的輸出是正確的。由於某種原因,它只能放在數組中。 (因此,二維數組,數組中的數組)。

相關問題