tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
426
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cronkalonca cronkalonca ist offline Grünschnabel
    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)
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Brokat
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    470
    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:
    boolean containsKey(Object key)
    Returns true if this map contains a mapping for the specified key.
    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.
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  3. #3
    cronkalonca cronkalonca ist offline Grünschnabel
    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
     

  4. #4
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Brokat
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    470
    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.

  5. #5
    cronkalonca cronkalonca ist offline Grünschnabel
    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

  1. MySQL-Abfrage nach 2 Kategorien sortieren
    Von smoothart im Forum PHP
    Antworten: 24
    Letzter Beitrag: 08.09.11, 11:16
  2. Kategorien sortieren
    Von zyro im Forum Relationale Datenbanksysteme
    Antworten: 10
    Letzter Beitrag: 03.11.08, 15:54
  3. Antworten: 2
    Letzter Beitrag: 24.07.06, 15:28
  4. Antworten: 10
    Letzter Beitrag: 11.04.06, 16:22
  5. Antworten: 1
    Letzter Beitrag: 17.05.04, 11:42