ich hab irgendwie momentan entweder einen dicken Denkfehler oder Java und Eclipse wollen heute nicht. Ich vermute ersteres
Es geht darum , dass ich ein Array aufräumen will während der Laufzeit. Es ist ein Array mit dem Objekttyp Artikel. Wir sollen als Aufgabe ein Programm schreiben, womit wir quasi Artikel verwalten können und dazu gehört eben auch, dass man Artikel löschen kann an jeder x- beliebigen Stelle. Sobald diese gelöscht sind, steht an der Stelle ein Artikelobjekt mit der Artikelnr 0 bei mir.
Ich hab eine Methode mit einer for Schleife geschrieben, die die Leerstelle raussucht und den Nachfolgerartikel um 1 Platz nach vorne verrückt um.
BSP:
[ A1; A2; A3;A4;A5]
A3 wird gelöscht
[ A1; A2; 0 ;A4;A5]
So sollte es aussehen :
[ A1; A2; A4;A5; 0]
So sieht es bei mir aus :
[ A1; A2; A4;A5;A5]
Hier der Quellcode und die fehlerhafte Ausgabe :
Code:
public void pruefeLeerstellen() {
Artikel [] sortieren = aktuelleListe;
int temp = 0;
Artikel neu = null;
for (int i = 0; i < aktuelleListe.length; i++) {
if (sortieren[i].getArtikelnr() != 0 ) {
if (aktuelleListe[temp] != aktuelleListe [temp+1]) {
neu = sortieren[i];
aktuelleListe[temp] =neu;
temp++;
}
}
}
}
" Welche Artikelnummer hat der zu löschende Artikel ? : 2 Der Artikel wurde gelöscht ! Cola Zero 0,5 l | Artikelnr : 1. | Bestand: 50 Stk. | Preis: 1.2 €/Stk. | Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. | Cola Vanille 1,0 l | Artikelnr : 3. | Bestand: 60 Stk. | Preis: 1.8 €/Stk. | Smirnoff Red 0,7 l | Artikelnr : 4. | Bestand: 10 Stk. | Preis: 13.5 €/Stk. | Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. | Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. | Erneute Eingabe ? (j/n) j Cola Zero 0,5 l | Artikelnr : 1. | Bestand: 50 Stk. | Preis: 1.2 €/Stk. | Cola Vanille 1,0 l | Artikelnr : 3. | Bestand: 60 Stk. | Preis: 1.8 €/Stk. | Smirnoff Red 0,7 l | Artikelnr : 4. | Bestand: 10 Stk. | Preis: 13.5 €/Stk. | Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. | Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. | Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. | Welche Artikelnummer hat der zu löschende Artikel ? : "
Mein Gedanke dazu: Ich brauche ja eine for-Schleife, die erstmal einfach nur durch das Array durchgeht. An jeder Stelle, wo die Artikelnummer ungleich 0 ist, soll der Artikel in eine temporäre "neu" Variable geschrieben werden.
Diese neu variable wird eingesetzt an der Stelle aktuelleListe[temp]. Und temp wird für jeden gefundenen Artikel um einen hoch gezählt.
Ich hab bereits versucht den Fehler damit abzufangen, wenn ich sage if (aktuelleListe[temp] != aktuelleListe[temp+1]). Das ignoriert Eclipse dezent, der Nachfolgeartikel kann genau der gleiche Artikel sein, wie der an der aktuellen Stelle.
Weitherhin wollte ich es versuchen, indem ich eine 2 for schleife in die "Hauptschleife" reinschreibe und quasi jedes mal wenn i um einen erhöhe, der nochmal durch die ganze Liste geht und alle Duplikate rausschmeisst. Gleiches Ergebniss wie vorher...
Ich weiss echt nicht weiter. Vielleicht sieht das ja einer von euch so auf die Schnelle, was da jetzt die richtige Vorgehensweise wäre.. Ich wäre auch für Tipps dankbar
Frage
xFiSiRaZx
Moinsen zusammen,
ich hab irgendwie momentan entweder einen dicken Denkfehler oder Java und Eclipse wollen heute nicht. Ich vermute ersteres
Es geht darum , dass ich ein Array aufräumen will während der Laufzeit. Es ist ein Array mit dem Objekttyp Artikel. Wir sollen als Aufgabe ein Programm schreiben, womit wir quasi Artikel verwalten können und dazu gehört eben auch, dass man Artikel löschen kann an jeder x- beliebigen Stelle. Sobald diese gelöscht sind, steht an der Stelle ein Artikelobjekt mit der Artikelnr 0 bei mir.
Ich hab eine Methode mit einer for Schleife geschrieben, die die Leerstelle raussucht und den Nachfolgerartikel um 1 Platz nach vorne verrückt um.
BSP:
[ A1; A2; A3;A4;A5]
A3 wird gelöscht
[ A1; A2; 0 ;A4;A5]
So sollte es aussehen :
[ A1; A2; A4;A5; 0]
So sieht es bei mir aus :
[ A1; A2; A4;A5;A5]
Hier der Quellcode und die fehlerhafte Ausgabe :
" Welche Artikelnummer hat der zu löschende Artikel ? : 2
Der Artikel wurde gelöscht !
Cola Zero 0,5 l | Artikelnr : 1. | Bestand: 50 Stk. | Preis: 1.2 €/Stk. |
Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. |
Cola Vanille 1,0 l | Artikelnr : 3. | Bestand: 60 Stk. | Preis: 1.8 €/Stk. |
Smirnoff Red 0,7 l | Artikelnr : 4. | Bestand: 10 Stk. | Preis: 13.5 €/Stk. |
Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. |
Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. |
Erneute Eingabe ? (j/n) j
Cola Zero 0,5 l | Artikelnr : 1. | Bestand: 50 Stk. | Preis: 1.2 €/Stk. |
Cola Vanille 1,0 l | Artikelnr : 3. | Bestand: 60 Stk. | Preis: 1.8 €/Stk. |
Smirnoff Red 0,7 l | Artikelnr : 4. | Bestand: 10 Stk. | Preis: 13.5 €/Stk. |
Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. |
Grey Goose 0,7 l | Artikelnr : 5. | Bestand: 4 Stk. | Preis: 39.99 €/Stk. |
Hier könnte Ihr Artikel stehen ! | Artikelnr : 0. | Bestand: 0 Stk. | Preis: 0.0 €/Stk. |
Welche Artikelnummer hat der zu löschende Artikel ? : "
Mein Gedanke dazu: Ich brauche ja eine for-Schleife, die erstmal einfach nur durch das Array durchgeht.
An jeder Stelle, wo die Artikelnummer ungleich 0 ist, soll der Artikel in eine temporäre "neu" Variable geschrieben werden.
Diese neu variable wird eingesetzt an der Stelle aktuelleListe[temp]. Und temp wird für jeden gefundenen Artikel um einen hoch gezählt.
Ich hab bereits versucht den Fehler damit abzufangen, wenn ich sage if (aktuelleListe[temp] != aktuelleListe[temp+1]). Das ignoriert Eclipse dezent, der Nachfolgeartikel kann genau der gleiche Artikel sein, wie der an der aktuellen Stelle.
Weitherhin wollte ich es versuchen, indem ich eine 2 for schleife in die "Hauptschleife" reinschreibe und quasi jedes mal wenn i um einen erhöhe, der nochmal durch die ganze Liste geht und alle Duplikate rausschmeisst. Gleiches Ergebniss wie vorher...
Ich weiss echt nicht weiter. Vielleicht sieht das ja einer von euch so auf die Schnelle, was da jetzt die richtige Vorgehensweise wäre..
Ich wäre auch für Tipps dankbar
Vielen Dank !
Link zu diesem Kommentar
Auf anderen Seiten teilen
5 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.