Ich verwende nur diesen Code, um eine Zeile in einer zweidimensionalen Matrix in Java umzukehren. es scheint so ein einfacher Code zu sein, aber aus irgendeinem Grund funktioniert es nicht. Die Rown einer Matrix war ursprünglichWert eines Arrays ändert sich ohne Zuweisung
112 42 83 119
wurde
119 83 83 119
ich den Code auf Fehler und fand heraus, dass die tempMatrix2 auch geändert wird. Ich kann nicht verstehen warum. Es ändert sich in der for-Schleife in derselben Zeile, in der ich der Matrix [rowN] [i] einen Wert zuweise. Jede Hilfe wird geschätzt.
'Matrix [rowN]' und 'tempMatrix2' sind das gleiche Array. Das Ändern eines wird das andere ändern. – 4castle
Wenn Sie 'int [] tempMatrix2 = Matrix [rowN];' erstellen, erstellen Sie eine zweite * Referenz * für dasselbe Array-Objekt auf dem Heap. Deshalb. Damit Ihr Algorithmus funktioniert, müssen Sie eine * Kopie * erstellen. Aber es gibt viel einfachere Möglichkeiten zum Umdrehen - gehen Sie nur zur Hälfte in das Array und tauschen Sie die Werte mit der anderen Hälfte. –
Noch einfacher könnte sein 'List reverser = Arrays.asList (Matrix [rowN]); Collections.reverse (Umkehrer); Matrix [rowN] = Umkehrer; '. Oder wechseln Sie zu einem funktionelleren Paradigma wie [Streams] (http://stackoverflow.com/questions/tagged/java-stream) oder [kotlin] (http://stackoverflow.com/questions/tagged/kotlin). –