Input/Output Textdatei in Objekte überführen?

lam_tr

Top Contributor
Hallo zusammen,

ich hab ein folgendes Problem. Ich habe eine Textdatei, die hat den folgenden Auffbau

Java:
Ein Prozess Owner stellt das "I" in einer RACI Matrix dar. Was ergibt sich daraus? 
a) Prozess Owner wird über den Fortschritt der Aktivitäten berichten 
b) Prozess Owner wird die Aktivitäten ausführen 
c) Prozess Owner wird über den Fortschritt der Aktivitäten auf dem Laufenden gehalten 
d) Process Owner wird die Aktivität managen 
 
Lösung: c)

Das Objekt "Aufgabe" an sich hat folgende Attrribute:
-Frage: String
-RichtigeAntwort: String
-Antworten: String[]

Wenn diese Struktur gleich bleibt dann ist es einfach in XML zu überführen.
Aber die Fragen und die möglichen Antworten könnten mehrzeilig sein. Wie soll ich das am besten dann einlesen.

Java:
Welche Aussage über Service Portfolio und Service 
Catalogue ist KORREKT? 
a) der Service Catalogue enthält nur Informationen über aktuelle oder kurz vor dem Deployment  
    stehende Services, das Service Portfolio enthält nur Informationen über Services, deren künftige  
    Entwicklung untersucht wird 
b) der Service Catalogue enthält Information über alle Services, das Service Portfolio enthält nur  
    Informationen über Services, deren künftige Entwicklung untersucht wird 
 c) Service Portfolio enthält Information über alle Services, der Service Catalogue nur über aktuelle  
     oder kurz vor dem Deployment stehende Services 
d) Service Catalogue und Service Portfolio sind zwei Bezeichnungen für denselben Inhalt

Gruss lam
 
am besten strukturiert..

du hast doch selbst schon XML genannt, warum sollten da Zeilenumbrüche stören?
falls die auch noch durch einfachen Text "[ZU]" kodiert sind, gibt es sie nicht einmal mehr

allgemein kann man XML auf verschiedenste Arten bearbeiten, von komplexen Apis, DOM oder SAX,
zum manuellen Txt-Einlesen, alles in einen String(-Builder) und danach manuell zerlegen,

da kann man ja nicht pauschal irgendeine Code-Zeile empfehlen

----


wenn du dich streng an das Format

...
Text Text Text
Text
Lösung: [a-d]
a) Text Text
Text
b) Text Text
Text
c) Text Text
Text
d) Text Text
Text
...
hälst, dann könntest du auch eine reine Txt-Datei analysieren,
die Textbausteine 'Lösung: ' usw. könnten als Trenner ausreichen,
werden wohl kaum im normalen Text an genau dieser Position auftauchen,

notfalls minimal verfeinern, [LÖSUNG] oder <LÖSUNG> geht schon Richtung XML,
aber es muss ja nicht unbedingt komplett alles ver-taggt werden
 
Zuletzt bearbeitet von einem Moderator:
Hi SlaterB,

ich denk mein Problem ist das zerlegen der Strings. Ich hab versucht in der Form zu machen, aber sobald es mehrzeilig wird 🙂

Java:
		try {
			String fp = null;
			BufferedReader br = new BufferedReader(new FileReader(new File(fp)));
			String line;
			MultipliChoiceKarte k;
			StringBuilder sb = new StringBuilder();

			boolean isHeader=true;
			
			while (br.ready()) {
				k=new MultipliChoiceKarte();
				line=br.readLine().trim();
				
				if(isHeader){
					sb.append(line+"\n");
				}
				while (br.ready() && line.startsWith("a) ")) {
					isHeader=false;
					k.setFrage(sb.toString());
					
				}
				k.setFrage(sb.toString());
				if(line.startsWith("a) ")){
					
				}
				else if(line.startsWith("b) ")){
					
				}
				else if(line.startsWith("c) ")){
					
				}
				else if(line.startsWith("d) ")){
					
				}
				else if(line.startsWith("Lösung: ")){
					
				}
			}
		}catch (Exception e) {
		}
 
was ist denn jetzt die Frage? dein Code ist sicherlich noch in vielerlei Hinsicht falsch,
aber ich werde es nicht für dich weiterprogrammieren,
zwei Tipps:

- Zeile 17-21 weg, eine innere Schleife ist Murks

- quasi dasselbe nochmal: die äußere Schleife ist gut, lies genau eine Zeile je Schleifendurchlauf ein,
für den Rest des while gilt es jetzt nur noch, die Zeile richtig einzuordnen,

da nicht jede Zeile mit a) beginnt usw. musst du dir außerhalb der Schleife merken, was gerade angesagt ist,
eine Variable zustand für die x verschiedenen aktuellen Zustände, entweder einfach und unsauber ein int, oder char/String, oder Enum
 

Zurück
Oben