2016-03-30 61 views
0

我對此很新,我無法把頭圍繞在此。我已經基本被賦予一個4x4的陣列,例如:如何在4x4陣列中反轉一行

5 2 1 7 
3 2 4 4 
7 8 9 2 
1 2 4 3 

我試圖扭轉特定行,我都有點吃力找到任何網上關於這樣做是爲了特定的行,所以我想知道如果任何人都可以給我一個想法我如何才能解決這個問題。

所需的輸出是如果用戶要求0行到被逆轉,然後它會返回

7 1 2 5 
3 2 4 4 
7 8 9 2 
1 2 4 3 

我已經嘗試它,但我的代碼是行不通的。這是我的代碼:

for(int i = 0; i < row; i++){ 
for(int col = 0; col < cols/2; col++) { 
    int temp = arr[i][col]; 
    arr[i][col] = arr[i][arr[i].length - col - 1]; 
    arr[i][arr[i].length - col - 1] = temp; 
} 

在此先感謝!

+0

陣列已經問世,因爲它是爲了顯示爲4×4 –

+2

號碼的長行,如果它是一個數組的數組,然後反向「行」是簡單地顛倒一個特定的數組。有大量關於如何[反轉數組]的信息(http://stackoverflow.com/questions/2137755/how-do-i-reverse-an-int-array-in-java)。 – KevinO

+0

你的代碼對我來說看起來沒問題。你想告訴你給定的代碼有哪些錯誤/問題? – user2004685

回答

0

好的,首先,無論何時您在數據結構上運行,都不要嘗試使用它。 在這裏你通過切換第一個和最後一個來改變數組,但是如果長度是奇數會發生什麼?有一個你沒有處理的情況。 其次,你是在錯誤的指數運行,無論是改編[I]。長度== arr.length 如果這不是一個平方它也有缺陷......

我會節省一個維數組和開關它如果你有索引的麻煩。

嘗試使用此代碼:

for(int i = 0; i < arr.length/2; i++) 
{ 
    int temp = arr[i]; 
    arr[i] = arr[arr.length - i - 1]; 
    arr[arr.length - i - 1] = temp; 
} 
0

使用特定的行數和數組,我相信這將工作。試試看,讓我知道。

function rowSwitch(row_num, arr) { 

for(int col = 0; col < arr[row_num].length/ 2; col++) { 
    int temp = arr[row_num][col]; 
    arr[row_num][col] = arr[row_num][arr[row_num].length - col - 1]; 
    arr[row_num][arr[row_num].length - col - 1] = temp; } 

} 
+0

set'final int [] a = arr [row_num]'並使用'a'工作。不需要這麼冗長。 –

+0

謝謝克里斯你的方法工作!感謝所有想嘗試幫助的人 –