Also ich hab ein Problem mit einer Funktion! Und zwar hab ich ein String-Array. Jetzt muss ich dort in die Mitte ein neues Element kopieren und alle anderen Elemente nach hinten verschieben. Dazu hab ich mir auch schon eine Lösung überlegt.
1. Ich erstelle ein neues Array = array2
2. Alles Strings die Kleiner als der übergebene Index sind können genauso übernommen werden
3. index und i sind gleich dann wird der neue Wert "add" übernommen
4. Alles was größer ist als index wird dann eingefügt und einfach i-1 genommen.
So die Theorie ! Hier die Praxis:
Java:
publicvoidaddElements(String add,int index){// Überprüfen ob this.parts leer istif(this.parts ==null){this.parts =newString[1];this.parts[0]= add;}else{// Zweites Array erstellenString[] array2 =newString[this.parts.length +1];// 1.for(int i =0; i < array2.length; i++){if(this.parts[i].length()< index)// 2.
array2[i]=this.parts[i];elseif(this.parts[i].length()== index)// 3.
array2[i]= add;elseif(this.parts[i].length()> index)// 4.
array2[i]=this.parts[i -1];}this.parts = array2;// Und zum Schluss Array Speichern}for(int i =0; i <this.parts.length; i++){// Testausgabe!System.out.println(this.parts[i]);}}
Und das ist die Exception:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
Ich weiß zwar was sie bedeutet komm aber auf keine andere Lösung -.-
Jo richtig ! Soweit bin ich auch aber eigentlich dürfte er in die if-claus nur rein gehen wenn es größer als der index ist ... und dann ist die länge des Array´s größer!
Jo richtig ! Soweit bin ich auch aber eigentlich dürfte er in die if-claus nur rein gehen wenn es größer als der index ist ... und dann ist die länge des Array´s größer!
Das geht nicht ... es wäre zuviel arbeit alles zu ändern ! es sollte shcon so klappen!
Als alternative hab ich mir überlegt aus dem array ne arraylist zu machen und dann zum schluss wieder zu nem array ! ISt das Möglich?
Also geht es ja doch wenn du schon danach fragst! Ja aus einer Arraylist kann man dann wieder ein Array machen. Das meinte ich auch mit "Umwandeln". Du sollst nicht den ganzen Code umstellen!!
Also geht es ja doch wenn du schon danach fragst! Ja aus einer Arraylist kann man dann wieder ein Array machen. Das meinte ich auch mit "Umwandeln". Du sollst nicht den ganzen Code umstellen!!
Entweder gucke ich schief, was ich bei meiner heutigen Verfassung nicht ausschließen möchte, oder das kann vorne und hinten nicht funktionieren, weil:
1) Wenn array2 um eins länger ist als parts, man bis zum Ende von array2 läuft und mit dem letzten Index auf parts zugreift, kann es nur schiefgehen.
2) Beim ersten Element geht es auch gleich schief, da i = 0 ist: this.parts[i - 1];
3) Vielleicht verstehe ich es ja nicht, aber was soll in den if-Bedingungen dieser Teil: „this.parts.length()“? Was hat die Länge des Strings in parts mit der Sache zu tun?
System.arraycopy ist übrigens wesentlich schneller, als die Elemente „per Hand“ zu verschieben.