ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
426
426
EMPFEHLEN
-
31.08.10 13:17 #1
- Registriert seit
- Aug 2010
- Beiträge
- 3
Hallo,
ich habe folgendes Problem:
Ich lese in einem Applet ein Fragenkatalog aus, der liegt als xml Datei vor. Die Fragen haben jeweils eine Oberkategorie und eine Unterkategorie. Ich möchte nun zum einen alle Oberkategorien mit den passenden unterkategorien ausgeben und auswählen welche Kategorien der Fragen im Quiz gestellt werden sollen.
Die Fragen werden alle in einer ArrayList<Fragen> gespeichert.
gibt es die Möglichkeit die ArrayList durchzugehen und alle Fragen, bei denen die Kategorie "x" ist, auszugeben.
zur Zeit versuch ich beim Einlesen der xml Datei, direkt alle Kategorien zusätzlich in einem Array zu speichern, kriege aber nicht die Verknüpfung ziwschen den Ober- und Untekrategorien hin.
Ich hoffe jemand versteht was ich meine
Ich werde noch ein paar Zeilen des Codes dazu packen zum besseren Verständnis.
XML-Aufbau:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
<katalog> <frage> <text>Welcher Teil ist bei sehr vielen Regulationen in unserem Körper der Regler?</text> <antworta>Das Gehirn</antworta> <antwortb>Die Bauchspeicheldrüse</antwortb> <antwortc>Das Blut</antwortc> <antwortd>Muskeln</antwortd> <richtig>a</richtig> <lettera>M</lettera> <letterb>Ä</letterb> <oberkategorie>bio</oberkategorie> <unterkategorie>regulation</unterkategorie> </frage> </katalog>
Code :1 2 3 4 5 6 7 8 9
for(int i=0; i<katalog.size(); i++) // ArrayList katalog enthält alle Fragen aus der XML Datei { ersteGefundeneOberkategorie prüfen ob sie schon mal gefunden wurde wenn nein: in Array speichern wenn ja: überspringen Unterkategorien dazu suchen prüfen ob sie schon mal gefunden wurde wenn nein: in Array speichern wenn ja: überspringen }
So hab ich mir das Ganze jetzt gedacht, es fehlt nur an der cleveren Umsetzung. Wie speichere ich nun die Ober- und Unterkategorien so ab das die Verbdinung nachvollziehbar ist und ich Werte nicht doppelt abspeicher, weil die Fragen nicht nach Kategorien geordnet sind.
Ich hoffe jemand hat da eine Hilfestellung für mich.
Danke schon mal für Eure Mühe.
EDIT: Um das nochmal zu verdeutlichen,
gibt es eine Möglichkeit eine List oder ähnliches wie z.B. eine Datenbank abzufragen?
ich lese jetzt die Oberkategorien und die Unterkategorien jeweils in ein Array, mir fehlen dann aber die verknüpfungen zwischen den jeweiligen kategorien.
eine abfrage des Fragenkatalogs in Form von:
Zeige alle fragen, die als unterkategorie "123" haben oder als oberkategorie "xyz" haben
wäre da um einiges einfacher. So eine möglichkeit hab ich aber noch nirgends gelesen.Geändert von cronkalonca (31.08.10 um 16:16 Uhr)
-
01.09.10 12:50 #2
Wie wäre es mit HashMaps?
Du könntest für deinen Fall etwas verschachteln, so z.B.:
HashMap<String,HashMap<String,<ArrayList<Fragen>>>
String1: Oberkategorie
String2: Unterkategorie
Die Abfrage, ob es die Oberkatagorie gibt könntest du gut mit folgender Methode machen:
Bei der Unterkategorie würde mir jetzt nur einfallen, dass du einfach alle Oberkategorien durchgehst und wiederum oben genannte Methode anwendest. Eine Verknüpfung ist auf alle Fälle da.boolean containsKey(Object key)
Returns true if this map contains a mapping for the specified key.Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
03.09.10 16:38 #3
- Registriert seit
- Aug 2010
- Beiträge
- 3
Hi, um das ganze nochmal aufzulösen, vielleicht hat ja mal jemand das gleiche Problem:
zuerst sammel ich die Oberkategorien in ArrayList<String> Oberkategorien.
Danach sammel ich zu jeder Oberkategorie alle passenden Unterkategorien und speicher die in ArrayList<Cat> Unterkategorien, wobei Cat
String oberkategorie="";
String unterkategorie="";
int frageid=0;
enthält.
Danach sammel ich alle Kombination von Unterkategorien und den passenden Fragen dazu und speicher die in ArrayList<Kombo> Fragen, wobei Kombo
int unterkategorieid=0;
int frage=0;
enthält.
Nun schleif ich durch die Oberkategorien, erstelle dort checkboxen etc. schleife für jede Oberkategorie durch die entsprechenden Unterkategorien und erstelle dafür die Checkboxen.
Anhand der selektierten Checkboxen kann man dann die ids der Unterkategorien in einem Array speichern. Den dann durchlaufen und die entsprechenden Fragen passend dazu rausfinden. Schwups schon ist es fertig
Denke mal das ich es mir selber schwer gemacht habe, aber so funktioniert es wenigstens.
Grüße
-
03.09.10 16:41 #4
Darf ich fragen, wieviele Zeilen code das etwa sind? Das klingt furchtbar kompliziert und unübersichtlich, aber schön, dass es funktioniert
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
04.09.10 07:33 #5
- Registriert seit
- Aug 2010
- Beiträge
- 3
Also das gesamte Quiz hat 1439 Zeilen Code, wobei gut die Hälfte davon für das Einlesen der xml datei und der Auswertung der Kategorien etc. zuständig sind. Wenn ich irgendwann mal die Zeit und Nerven habe, dann werd ich das mal versuchen cleverer zu lösen, aber vorerst läuft alles, ohne Performanceeinbrüche oder ähnlichem.
Ähnliche Themen
-
MySQL-Abfrage nach 2 Kategorien sortieren
Von smoothart im Forum PHPAntworten: 24Letzter Beitrag: 08.09.11, 11:16 -
Kategorien sortieren
Von zyro im Forum Relationale DatenbanksystemeAntworten: 10Letzter Beitrag: 03.11.08, 15:54 -
aus Ordner auslesen und nach Uploaddatum sortieren
Von LN5 im Forum PHPAntworten: 2Letzter Beitrag: 24.07.06, 15:28 -
Daten aus 5 Textdateien auslesen und nach Datum sortieren
Von -GS-Master im Forum PHPAntworten: 10Letzter Beitrag: 11.04.06, 16:22 -
Dateien auslesen und dann nach Name sortieren
Von cater im Forum PHPAntworten: 1Letzter Beitrag: 17.05.04, 11:42





Zitieren
Login




