Problem bei Arrayrückgabe
-
Hallo zusammen,
ich bin blutiger Javaanfänger und bin gerade am Rande der Verzweiflung. Ich habe eine Methode geschrieben, die ein Array an ein anderes anhängen soll und das dabei neu entstehende Array zurückgibt:
public int[] appendArray (int[] arr1, int[] arr2) { int newSize = arr1.length + arr2.length; int[] tmp = new int[newSize]; int k = 0, j = 0; for(int i = 0; i < newSize; i++) if(k != arr1.length){ tmp[i] = arr1[i]; k++; } else tmp[i] = arr2[j]; return tmp; }
Nun wollte ich meine Methode mal gerne testen. Dabei soll an dass Array "arr0" das Array "arr1" angehängt werden. Das geschieht in der main so:
int[] arr0 = {1,2,3,4}; int[] arr1 = {5,6,7,7}; arr0 = appendArray(arr0, arr1);
Dabei kommt aber folgender Fehler:
Cannot make a static reference to the non-static method appendArray(int[], int[]) from the type test
Bestimmt liegt es irgendwie an an der Arrayzuweisung, aber ich komme nicht auf die Lösung.
Könnt ihr mir helfen, den Code zu verbessern?
Vielen Dank
lg, freakC++
-
Ich habe die Lösung selbst herausgefunden.
Der Methodenkopf muss mit static deklariert sein:
public static int[] appendArray (int[] arr1, int[] arr2) {
Ich kenne static jedoch nur aus C++. Warum muss das hier static sein?
Danke euch
lg, freakC++
-
freakC++ schrieb:
Ich kenne static jedoch nur aus C++. Warum muss das hier static sein?
Aus demselben Grund wie in C++.
-
Hallo.
schau dir mal die Funktion System.arraycopy an
-
ah! Super! Vielen Dank
-
Fischkopf2009 schrieb:
Hallo.
schau dir mal die Funktion System.arraycopy anDas funktioniert nicht, weil arraycops das Array ja nicht vergrößert, sondern eine reine Kopierfunktion hat.
lg, freakC++
-
So gehts ziemlich elegant mit arraycopy:
int[] arr0 = {1,2,3,4}; int[] arr1 = {5,6,7,7}; int[] arr2 = new int[arr0.length+arr1.length]; System.arraycopy(arr0, 0, arr2, 0, arr0.length); System.arraycopy(arr1, 0, arr2, arr0.length, arr1.length);
-
mmh ok :D. Aber nur, weil Du vorher das neue Array angelegt hast
Danke dir!