Verwaltungsproblematik beim speichern von Datensätzen

Not-OP

Neues Mitglied
Guten Tag,

seit Tagen stokkt es mit dem vorankommen zur Lösung meines Problems - so wie es vielen Anfängern halt so geht.
Ich bin seit Jahren Anfänger und muss mich zum Prüfungszeitraum leider immer wieder mit Java herumschlagen und meine Lebenszeit verschwenden - denn sonst kippt am Ende mein ganzes Studium... und das wäre frustrierend. Es wird also Zeit, endlich in den Flow zu kommen und nicht immer fragend den Kommulitonen hinterherzuschauen, die den Kram schon seit Jahren abgeschlossen haben mit der Frage: hää???
Natürlich habe ich schon nach Lösungen gesucht, nach Anstößen usw.aber ich bitte euch mir nochmal konkret zu meiner Aufgabe zu helfen.
So, genug herumgeheult. Ihr wisst bescheid und ich komme zum konkreten Fall!


Hier
http://www.java-forum.org/thema/mehrdimensionales-array-meherer-typen-moeglich.98941/
wurde eine ähnliche Frage gestellt, aber eben nicht meine.

Die Aufgabe besteht darin, ein GUI zu erstellen (das läuft schon problemlos!) über das man Datensätze einträgt, diese in einem Textfeld darstellt, ergänzt oder löscht.

Es geht um Hunde, genauer um deren Alter (Integer), deren Rasse (String) und deren Schulterhöhe (Integer)
Ein Datensatz besteht also immer aus 3 Einträgen. JTextfield ´s sind dafür im GUI eingerichtet.
eingabeAlter = new JTextField ( 10 );
eingabeRasse = new JTextField ( 10 );
eingabeHoehe = new JTextField ( 10 );

Ich habe 3 JButton´s erstellt:

JButton zufuegen = new JButton ( "Hund zufügen" ); // Speichere Eingaben
zufuegen.setActionCommand ( "zufuegen" );
zufuegen.addActionListener ( this );

JButton auflisten = new JButton ( "Hunde auflisten" ); // Zeige alle Datensätze im JTextField "ausgabe"
auflisten.setActionCommand ( "auflisten" );
auflisten.addActionListener ( this );

JButton neu = new JButton ( "Neu" ); // Gespeicherte Datensätze löschen
neu.setActionCommand ( "neu" );
neu.addActionListener ( this );

Zu allen Vorgängen sollen Fehlermeldungen im JTextField "ausgabe" geschrieben werden, wenn "eingabeAlter" und "eingabeRasse" kein Integer und "eingabeRasse" kein String ist oder mind. ein leeres JTextField gespeichert werden soll.


Die Problematik liegt in der Handhabung der Daten. Ich wollte ein verschachteltes Array anlegen, bei dem der äußere Array so groß ist wie die Zahl der Datensätze (also variabel) und der innere Array genau "3" groß ist. --> [ 2 ]
Das Problem liegt aber darin, das Arrays nur einen Datentyp speichern können, was beim äußeren Array ja kein Problem wäre. Welche Alternative habe ich also ? ArrayList ?! Wie handhabe ich das? Oder kann ich die Integer Daten zu String-Daten umschreiben, sodass ich den inneren Array als String - Array benutzen kann? Geht das ? Außen Integer, innen String? Das wiederum wäre unpraktisch, wenn man per Abfrage zB. die Schulterhöhen vergleichen wollen würde, da die Zahlen ja nicht mehr als Werte sondern als Zeichenketten gespeichert sind. Das ist in meiner Aufgabenstellung aber nicht gefragt.

Ich bin kein Freund der kurzen Worte, wenn es um Fragen geht, die ich seit Stunden/Tagen nicht lösen kann, deshalb wäre es sehr fein, wenn ihr einem ANFÄNGER erklären könntet, wie und warum ihr etwas in welcher Art und Weise programmieren würdet.

Kurz:
Wie handhabe ich immer gleich strukturierte Datensätze mit unterschiedlichen Datentypen und speichere diese ab, frage sie ab und lösche sie?

Danke, danke...

Not-OP
 
Mit deinem Ansatz funktioniert das nicht. Alle Elemente eines Arrays müssen demselben Datentypen (oder Subtypen) angehören. Du benötigst einen Datentyp, der alle erforderlichen Attribute speichern kann.
 
Danke, jetzt weiß ich das es mit ArrayList auch nicht geht.
Aber wie mache ich es dann? Hat jemand einen anderen Lösungsansatz?
 
ArrayList kann verschiedene Datentypen aufnehmen!
Java:
ArrayList liste = new ArrayList();
einfach keinen Datentyp angeben

Am besten du erstellst eine Klasse Hund und immer wenn du den button hinzufügen drückst, erstellst du ein neues Hund-Objekt und speicherst es in deiner arrayList:

Erstelle eine Klasse Hund:
Java:
class Hund(){
int alter;
String rasse;
int hoehe;
...
}

und eine ArrayList zum speichern der ganzen Hund-Objekte
Java:
ArrayList<Hund> hundeListe = new ArrayList();

Du kannst auch Vector benutzen
Java:
Vector<Hund> hundeListe = new Vector();
 
Zuletzt bearbeitet:
Also was studierst Du, dass Du Java machen musst es aber als verschwendete Zeit ansiehst? Schon mal darüber nachgedacht, etwas anderes zu studieren? Oder einfach das zu machen, was eigentlich alle Studenten machen sollten: Sich das ganze Semester lang auf die Studieninhalte zu konzentrieren und zu lernen / zu vertiefen / zu üben? So kurz vor den Prüfungen ist es extrem schwer. Bei Lernfächern mag es teilweise vielleicht gehen, wobei sich mir da der Sinn auch nicht wirklich erschließt, da Du das Wissen, das Du dir in kurzer Zeit einprägst vor allem im Kurzzeitgedächtnis hast, d.h. vieles ist nach einigen Wochen schlicht wieder weg.

Aber egal - das soll ja nicht das Thema sein.

Was schon gesagt wurde: Der Objektorientierte Ansatz ist das Mittel der Wahl. Also schreib eine entsprechende Klasse Hund und gut ist es. (Innerhalb eines Semesters wird man ja hoffentlich bis dahin gekommen sein! Bei uns im Studium wurde C++ in 4 Wochen komplett "nebenbei" abgefertigt als "Goodie" in den Übungen. Aussage Prof war, dass wir das eigentlich selbst an einem Wochenende ohne Hilfe schaffen müssten, uns C++ bei zu bringen aber er wollte nicht so sein und hat ein paar Übungsstunden geopfert.)

Ansonsten spricht doch nichts dagegen, mehrere Arrays zu machen. Dann hast Du ein Array mit Name, eines mit Alter, u.s.w. - aber das hat mit Java Entwicklung eigentlich nichts zu tun.

Konrad
 

Zurück
Oben