Methoden Element aus einem Array löschen, Rest nach vorne verschieben?

bluu7

Mitglied
Guten Tag!

Ich habe eine Übungsaufgabe vor mir, mit der ich Probleme habe. Ich soll aus einem Array ein Element löschen und anschließend die folgenden Elemente um eine Position nach vorne verschieben, so dass das gelöschte Element immer am Ende steht.

Bis jetzt habe ich folgendes gemacht:

Code:
public static void delete(int x, Object[] y) {
        y[x] = null;      //das gewünschte Element wird "gelöscht"
        Object[] temp = new Object[y.length];

        for (int i = 0; i < temp.length-1; i++) {
             if (y[i] != null) {
                y[i] = temp[i];
             }
        }
        
     temp[temp.length - 1] = null;

    }

Ich hatte das jetzt irgendwie so geplant, dass in das 2. Array alle Elemente kopiert werden, die nicht null sind und anschließend wird das letzte Element auf null gesetzt, so wie es in der Aufgabenstellung gewünscht ist.

Allerdings scheint das so nicht zu funktionieren, das neue Array kriegt immer auch das "null"-Element reinkopiert. Funktioniert die if-Abfrage so nicht? Bzw. ist mein Ansatz überhaupt zu gebrauchen? Freue mich über jede Hilfe 🙂

Grüße
 
Hey, du löschst doch ein Element, das bedeutet dein neues Array hat die Länge y.length - 1. Beim rüber kopieren der Alten Elemente würde ich im if prüfen i =! x , da im Array mehrere Elemente Null sein können. Zusätzlich muss du dir noch überlegen wie du Drüber Iterierst da ein Element Weg fällt und der Index nicht hoch gezählt werden sollte.
 
dein neues Array hat die Länge y.length - 1.
Ich verstehe die Aufgabe so dass die Länge des Arrays immer gleich bleibt, aber am Ende befinden sich die freien Einträge. Und du brauchst doch auch kein zweites Array zum Verschieben. Wenn du an der x.ten Stelle ein Element löschen willst kopierst du einfach alle die danach kommen um eine Stelle nach vorne und sobald du das erste null-Element eins nach vorne kopiert hast beendest du die Schleife denn du weisst dann ja dass alle dahinter auch null sein müssen. Hast du bis zum Ende noch kein null-Element kopiert gab es keine freien Einträge und du setzt das letzte Element auf null.
 

Zurück
Oben