Fehlerquelle leere ArrayList elegant abfangen

nossek

Aktives Mitglied
Ich habe eine Klasse CardFile, die unter anderem enthält:

- eine ArrayList "cards" mit Objekten der Klasse FileCard.
- eine Instanzvariable int currentCardIndex (welche Karte wird aktuell angezeigt und kann bearbeitet werden)
- Methoden zum Blättern nextCard() und previousCard(), die den currentCardIndex ändern
- Methoden die auf cards.get(currentCardIndex) zugreifen (löschen, ändern etc.)

Probleme gibt es logischerweise, wenn die ArrayList "card" leer ist.

Ich frage mich, wie man das am elegantesten abfängt.

Habe mir da folgendes überlegt:
In allen problematische Methoden cards.isEmpty() abfragen und in dem Fall
- bei Methoden ohne Rückgabewert nichts machen
- bei Methoden die ein Objekt zurückgeben sollen null zurückgeben

Wenn eine FileCard gelöscht wird ändert sich derzeit nichts am currentCardIndex, was bedeutet, daß die nächste FileCard zur Anzeige und Bearbeitung ausgewählt wird. Wenn die ArrayList nur noch eine FIleCard enthält und diese gelöscht wird ist daher currentCardIndex weiterhin = 0, obwohl ja gar keine FileCard mehr existiert, nicht schön.
Man könnte ja auch sagen, dass wenn das ListArray leer ist soll currentCardIndex = -1 sein. Das ließe sich erreichen, indem nach JEDEM löschen eines Elementes
Java:
if(cards.isEmpty){
   currentCardIndex = -1;
}
durchgeführt wird.

In dem Fall könnte man in den problematischen Methoden statt cards.isEmpty() eben currentCardIndex == -1 abfragen.

Wäre dies eine einigermaßen elegante Methode oder ist der ganze Entwurf Murks?

Ich hoffe daß die Frage nicht zu schwammig geraten ist!
 
Zuletzt bearbeitet:

MySelV

Aktives Mitglied
Hi,

meine Meinung ist zwar sicher subjektiv aber ich will sie trotzdem mal vorbringen:
Ich denke, dass es -an sich- egal ist, wie du es machst, weil der Aufrufer damit umgehen können muss. Das heißt, du legst fest, wie es sein wird und der der deinen Code aufruft darf sich darum kümmern, wie er mit Fehlern umgeht. Die Herausforderung für dich besteht also eigentlich darin:
- Dem Aufrufer mitzuteilen, wenn etwas schief ging (dafür würde ich eine Exception verwenden, die der Aufrufer entsprechend behandeln kann, z.B. Fehlermeldung ausgeben)
- Die Rückgaben konsistent zu halten (heißt, wenn du keine Exception im Fehlerfall wirfst, gib immer "null" o.ä. zurück)
- ~subjektiv~ Wenn etwas nicht durchgeführt werden kann, weil der Aufrufer einen Wert nicht gesetzt hat (z.B. deine Liste "cards" ist leer), dann ist dass ein Fehler -> Exception

Ob das alles so gut und richtig ist, weiß ich nicht, aber ich hoffe dass sich noch ein paar mehr beteiligen :)

Grüße
 

fastjack

Top Contributor
Schau Dir doch an, wie das in Java bei Listen etc. gelöst wird. Du kannst z.B. bei ungültigen Indizes eine IndexOutOfBoundsException werfen. Ich würde dasselbe Verfahren anwenden, dann bist wenigstens mit den schon vorhandenen Sachen konform.
 

nossek

Aktives Mitglied
Danke für eure Antworten!

Ich bin mit Exceptions noch nicht vertraut, nutze sie bislang nur beim Speichern und Laden von Dateien. Vermutlich sind meine derzeitigen Übungsprojekte noch zu übersichtlich, um den Nutzen ganz zu verstehen. Kannmir schon vorstellen: eine einfache Plausibilitätsprüfung der Argumente zu machen und dann einfach nichts zu machen wenn die Argumente nicht stimmen wird bei komplexen Projekten dann zu schwer nachvollziehbaren Fehlern führen...

Es ist auch schwierig als Anfänger Übungsprojekte schon auf Wiederverwendbarkeit des Codes anzulegen, wenn eh klar ist, daß man den Code nicht wiederverwenden wird, weil man hoffentich bald viel besseren Code schreiben wird. Aber da ist wohl Konsens, daß man sich gleich angewöhnt, es amtlich zu machen.

Muß wohl noch einige Hausaufgaben machen und kann derzeit keine konkreten Fragen zu dem Thema stellen...:rtfm:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
J Datentypen CSV to DB Leere Zellen in CSV mit Inhalt? Java Basics - Anfänger-Themen 11
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
MiMa Leere Datei ist nicht Leer ?? Java Basics - Anfänger-Themen 6
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
A Leere Datei wird ohne Inhalt geschrieben, obwohl Inhalt geschrieben wurde. Java Basics - Anfänger-Themen 4
H Leere Anweisung Java Basics - Anfänger-Themen 24
N CaretListener: leere Textfelder = Button sperren Java Basics - Anfänger-Themen 11
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
X Erste Schritte Java JTable leere Reihen löschen Java Basics - Anfänger-Themen 2
E leere Ausgabe Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M File.ser auf leere checken Java Basics - Anfänger-Themen 17
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
P Leere Arraylist hat size von 1? Java Basics - Anfänger-Themen 3
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
D Wie auf leere Benutzereingabe (int) prüfen? Java Basics - Anfänger-Themen 16
A Leere Fläche einer Tabelle umfärben Java Basics - Anfänger-Themen 3
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
B BufferedWriter - nur leere Datei erstellt Java Basics - Anfänger-Themen 4
G Leere Datei löschen? Java Basics - Anfänger-Themen 3
G leere columns "verstecken" Java Basics - Anfänger-Themen 5
G leere Ordner befinden sich nicht im Zip-Archiv Java Basics - Anfänger-Themen 8
K Leere Stelle im Array finden und ersetzen Java Basics - Anfänger-Themen 10
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
G RegEx für leere IP Adresse? Java Basics - Anfänger-Themen 13
J POI: Leere Excel Zellen Java Basics - Anfänger-Themen 3
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
S Leere Menge von integer Java Basics - Anfänger-Themen 3
R leere Zeichenkonstante? Java Basics - Anfänger-Themen 12
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben