Array Werte einfügen/löschen/ändern?

1 Antwort

Naja. Der User muss angeben können, welche Array-Position er ändern will. Achtung, Zählung beginnt bei 0. Dann muss er ggf. den neuen Wert eingeben.

Die Änderung von Werten eines Arrays erfolgt über

array[index] = wert;

Einfügen und Löschen stellen insofern ein Problem dar, als Arrays keine dynamische Länge haben. Daher musst Du bei beiden Operationen jeweils ein neues Array erzeugen, die Werte aus dem alten Array geeignet kopieren und "zahlen" auf dieses neue Array setzen. Beispiel für das Löschen:

double[] neueZahlen = new double[zahlen.length - 1];

// Zahlen vor dem zu löschenden Index kopieren
for (int i = 0; i < indexZuLöschen; i++)
{
  neueZahlen[i] = zahlen[i];
}

// Zahlen nach dem zu löschenden Index kopieren.
// Index-Shift beachten!!
for (int i = indexZuLöschen + 1; i < zahlen.length; i++)
{
  neueZahlen[i-1] = zahlen[i];
}

zahlen = neueZahlen;

Das Einfügen erfolgt prinzipiell äquivalent, nur, dass Du zwischendrin den einzufügenden Wert setzen und beim Index-Shift dann i+1 schreiben musst.

xGh0st2014 
Fragesteller
 14.12.2020, 19:27

Erst mal danke für die Hilfe.

Das löschen und ändern konnte ich dank dir umsetzten.

Könntest du mir jetzt noch mal bei dem einfügen helfen der sitzt bei mir noch nicht richtig?

0
ohwehohach  14.12.2020, 20:18
@xGh0st2014

Ich beschreibe mal die Schritte, dann kommst Du schon von alleine drauf :-) Also.

Einfügen bedeutet: Das Array muss ein Element länger werden (beachte: Beim Löschen wurde es ein Element kürzer - wie kann man es jetzt länger machen?).

Jetzt gibt es wieder ein Element, das die "Grenze" darstellt, nämlich die Einfügeposition. Du musst also jetzt (wie beim Löschen) alle Elemente bis hin zur Einfügeposition aus dem alten in das neue Array kopieren. Dann setzt Du an der Einfügeposition im neuen Array den neuen Wert. Jetzt ist es wichtig, genau zu überlegen: Die nachfolgenden Elemente des ursprünglichen Arrays sollen ja alle auch in das Array. Es soll keiner weggelassen werden. Wo muss also die Schleife beginnen und wie weit muss sie laufen? Du hast aber jetzt ein Element in das Ziel-Array eingefügt - wie ist also die Einfügeposition der restlichen Elemente?

0