Exklusive Präfixsumme

DerDecane

Aktives Mitglied
Servus zusammen, ich soll eine Methode schreiben die mir aus einem gegebenen Array die exklusive Präfixsumme erstellt.
Dazu habe ich ein array mit den Werten {1, 3, 2, 1, 2, 1, 4, 2}. Rauskommen soll ein Array mit den Werten {0, 1, 4, 6, 7, 9, 10, 14}.
Habe dazu folgende Methode geschrieben:
Code:
public static void calcPrefixEx(int[]array){
        int[]test = new int[array.length];
        test = array;
       
        array[1] = test[0];
        array[0] = 0;
       
        for (int i=2; i<array.length; i++){
            array[i] = array[i-1] + test[i-1];
        }
    }
Hab das Ganze bestimmt schon 10 Mal auf Papier durchgerechnet, eigentlich müsste das passen. Ich versteh nicht wo mein Fehler liegt. Wenn ich es laufen lasse, kommt nämlich immer {0, 1, 2, 4, 8, 16, 32, 64}, also quasi eine Zweierpotenzreihe, raus.

Hoffe mir kann jemand helfen ich versteh nicht warums nicht so geht. Auf Papier mach ichs ja genau so wie ichs programmiert hab.
 

truesoul

Top Contributor
Hallo

Mit dieser Zeile weist du test die Referenz von array zu.

Java:
test = array;

Heißt alles was du in array änderst wird auch in test geändert.

Grüße
 

truesoul

Top Contributor
Naja erstelle eine Kopie.

Java:
System.arraycopy(array, 0, test , 0, array.length);

Grüße
 

DerDecane

Aktives Mitglied
Achsoo, okay. Dann muss ich aber vorher trotzdem das Array test angelegen. Wenn ich das aber nur mit
Code:
int[]test= new int[];
mache meckert eclipse. Muss ich dann
Code:
int[]tmp = new int[array.length];
sowas in der Richtung nehmen oder wie geht das?
 

truesoul

Top Contributor
So sieht sollte dein Code aussehen

Java:
    public static void calcPrefixEx(int[] array) {
        int[] test = new int[array.length];
        System.arraycopy(array, 0, test, 0, array.length);

        array[1] = test[0];
        array[0] = 0;

        for (int i = 2; i < array.length; i++) {
            array[i] = array[i - 1] + test[i - 1];
        }

        for (int a : array) {
            System.out.print(a);
        }
    }

Grüße
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben