2014-03-01 37 views
0

這段代碼是將一個2D陣列「arr」完全移動到左側,但是由於某種原因,這些元素正在移動兩次。爲什麼在二維數組中左移的代碼不工作,而是向左移2?

public static void shiftLeft() 
     { 
     for(int i = 0; i<arr.length;i++) 
     { 
      int temp = arr[i][0]; 
      int n = 0; 
      for(n = 0;n<arr.length - 1;n++) 
      { 

       arr[i][n] = arr[i][n+1]; 

       arr[i][n+1] = temp; 


      } 
     } 
    } 
+0

你使用Eclipse代碼?你嘗試過調試嗎?另外,預期與實際產出有什麼關係?你期望什麼[[2,4,6],[1,3,5]]給你? – Shobit

+0

期望的輸出從 將是 3 4 2 1 – dramaGeek

回答

0

它不會左移兩次。您的for循環設置錯誤。

你想要做的是必須通過行外for loop循環,內for loop循環通過行元素(列)

--> outer loop [ .... ] 
       [ .... ] 
       | 
       v 
       inner loop 

在你的情況,無論是for循環迭代arr.length,在二維數組的情況下是行數。你想讓你的內循環循環arr[0].length - 1次數。

希望有所幫助。

0

試試這個:

for(int i = 0; i<arr.length;i++) 
{ 

    int temp = arr[i][0]; 
    int n = 0; 
    for(n = 0;n<arr[i].length - 1;n++)//This line has been changed 
    { 

     arr[i][n] = arr[i][n+1]; 

     arr[i][n+1] = temp; 


    } 
}