array[N] in array[N-1] kopieren.
-
Hallo!
Ich habe den folgenden Methodenkopf gegeben:
public static char[] entferne(int index, char[] zeichenkette)
Innerhalb dieser Methode soll ein weiteres char-Feld 'res' der Länge "zeichenkette.length-1" erzeugt werden.
Ferner solle man "zeichenkette" schrittweise durchlaufen und jeden Wert an der Stelle i in die neue Zeichenkette 'res' kopieren.
Allerdings: Wenn i dem Wert von "index" entspreche, so soll dieser Wert von "zeichenkette" ausgelassen werden.Hat jemand eine Idee?
Probiere schon eine Weile daran:
public static char[] entferne(int index, char[] zeichenkette){ int N = zeichenkette.length; char[] res = new char[N-1]; for(int i=1; i<N+1; i++) for(int j=i-1; j<N-1; j++){ if(index==i) continue; res[j] = zeichenkette[i]; break; } return res; }
Doch leider fehlt mir an dieser Stelle der springende Punkt.
-
Versuchs mal mit nur einer Schleife und zwei verschiedenen indizes für das ein- und ausgabearray ... wobei der zweite index nicht erhöht wird wenn du an der stelle "index" bist.
Ne abfrage ob du ausserhalb der indexgrenzen bist wäre auch nicht schlecht.
-
public static char[] entferne(int index, char[] zeichenkette){ char[] res = new char[n-1]; // bis index einfach alles übernehmen for (int i=0; i<index; i++) res[i] = zeichenkette[i]; // index in der Zeichenkette einfach überspringen for (int i=index; i<zeichenkette.length-1; i++) res[i] = zeichenkette[i+1]; // nicht aus dem Array laufen: i<zeichenkette.length-1; return res; }
-
Für Array-Kopieroperation lohnt sich auch der Blick auf die entsprechende Methode der Klasse System:
char res[] = new char[zeichenkette.length - 1]; System.arraycopy(zeichenkette, 0, res, 0, index); System.arraycopy(zeichenkette, index + 1, res, index, zeichenkette.length - index - 1);