2016-03-30 7 views
0

Ich bin ziemlich neu dazu und bin nicht in der Lage, meinen Kopf darum zu wickeln. Ich habe im Grunde eine 4x4-Matrix wie gegeben worden:Wie man eine Reihe in einem 4x4 Array umkehrt

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

Ich versuche zu umkehren bestimmte Zeilen, ich bin stuggling etwas zu finden, Online-Informationen für bestimmte Zeilen zu tun, damit ich mich gefragt, ob jemand könnte mir eine Idee wie ich das angehen könnte.

die gewünschte Ausgabe wäre, wenn ein Benutzer für Zeile 0 fragt umgekehrt werden, dann wäre es das Rück

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

ich es versucht haben, aber mein Code funktioniert nicht. Das ist mein Code:

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; 
} 

Vielen Dank im Voraus!

+0

das Array als eine lange Reihe von Zahlen herausgekommen ist gemeint als 4x4 –

+2

gezeigt werden, wenn es sich um ein Array von Arrays ist, dann eine „Reihe“ Umkehr ist einfach ein bestimmtes Array umkehren. Es gibt viele Informationen darüber, wie man ein Array umkehrt (http://stackoverflow.com/questions/2137755/how-do-i-reverse-an-int-array-in-java). – KevinO

+0

Ihr Code sieht in Ordnung für mich aus. Sie möchten mitteilen, welche Fehler/Probleme Sie mit dem angegebenen Code haben? – user2004685

Antwort

0

Ok, also zuerst, wenn Sie auf einer Datenstruktur laufen, versuchen Sie nicht daran zu arbeiten. Hier ändern Sie das Array, indem Sie zuerst und zuletzt wechseln, aber was passiert, wenn die Länge ungerade ist? Es gibt einen Fall, den Sie nicht behandelt haben. Zweitens laufen Sie auf der falschen Indizes, beide arr [i] == .length arr.length wenn das ist kein Platz es auch Fehler haben würde ...

ich ein eindimensionales Array speichern würde und Schalter wenn Sie Probleme mit Indizes haben.

Versuchen mit diesem Code:

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

Ich arbeite mit einer bestimmten Zeile num und Array, ich glaube, das wird funktionieren. Probieren Sie es aus und lassen Sie es mich wissen.

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

Setze 'final int [] a = arr [row_num]' und arbeite mit 'a'. Keine Notwendigkeit für eine solche Ausführlichkeit. –

+0

danke Chris deine Methode hat funktioniert! Danke an alle anderen, die versucht haben zu helfen –