Java Aus TextDatei in Array?

Xerxes18

Lieutenant
Registriert
Aug. 2008
Beiträge
700
Hallo nochmal,

ich bin fast am Ende meines Programms angelangt und das auch dank euch.

Ich versuche gerade einen Text aus einer TextDatei auszulesen und in ein Array zu speichern.

Leider funktioniert das nicht so ganz:


natürlich habe ich das alles in einer try,catch drin inklusive FileChooser.

Aber irgendwie ist kein Objekt in meinem Array :(

Danke im voraus!
 
Zuletzt bearbeitet:
Zunächst einmal sehe ich in dem Stück Code kein Array. Du meinst vermutlich den StringBuffer?

Ich versteh auch nicht, was das wiederholte "append() in den Konstrukturparametern soll. Da wird der Buffer ja immer größer gemacht. Nach dem ersten append() ist die zeile einmal im buffer, nach dem zweiten doppelt, nach dem dritten dreimal usw. Ich kann mir nicht vorstellen, dass du das so willst.

Ansonsten sieht das ganz ok aus. Bist du denn sicher, dass die Datei auch nicht zufällig leer ist, die du da verarbeitest?
 
Also die txt besteht teilweise aus namen, das sind namen von den Charaktern und die will ich jedesmal in ein neues Objekt packen.

So sieht es dann z.B. aus in der txt:

<headline> blablba </headline>
<characters>
<character>
<name> lisa </name>
</character>
<character>
<name> Mark </name>
</character>
</characters>

ich habe es mal mit split probiert, aber da spaltet er einfach nach dem ersten <name>, d.h. es gibt nur einen charakter den rest packt er an die nächste stelle des String Arrays.

Hier nochmal ein Code:
 
Zuletzt bearbeitet:
Das ist ja XML, da bietet Java einen eigenen Reader für. Eigene Routingen für XML basteln, ist etwas aufwendig.

Code:
Documentbuilder db;
Document dom = null;
String ergebniss[4];

dom = db.parse("datei.xml");
Element docEle = dom.getDocumentElement();

NodeList nl;

nl = docEle.getElementsByTagName("userid");
    ergebniss[0] = nl.item(0).getTextContent();

nl = docEle.getElementsByTagName("vname");
    ergebniss[1] = nl.item(0).getTextContent();
 
gibt es keine einfachere Methode, z.B. jede Zeile zu Prüfen, ob diese einen "<name>" enthält und wenn ja den string zwischen "<name>" und "</name>" zu filtern?

Ich splitte ja den den ganzen Text auf einmal, aber ich möchte ja nur die zeile haben :(
 
Zuletzt bearbeitet:
Mein Code da oben ist die einfache Variante.
Man muss sich gar nicht mit <xyz> rumplagen, man sagt einfach nur, dass man gerne den Kram zwischen <xyz> und </xyz> haben will.

Die XML zu dem Code da oben wäre zB:
<userid>1<userid>
<vname>abc</vname>
 
Du liest die Datei doch schon zeilenweise ein. Warum konkatenierst du denn die Datei komplett in einen String? Das ist doch unnötig
Du kannst doch nach jedem einlesen einer Zeile abfragen, ob es mit "<name>" anfängt. Wenn ja, dann schneidest du den Inhalt mit substring raus und packst den Namen dahin wo du ihn haben willst.
 
alles klar danke habs geschafft :)

Hätte aber eine andere Frage:

Ich bekomme immer hier ein ArrayIndexOutofBounds Exception und weiß nciht warum:

Was ich versuche:

Per Button sollen die Einträge in der JList (und damit auch in der ArrayList "szenen") geändert werden.

Ich habe mir gedacht, die Position des aktuellen Objektes zu bekommen und diesen in ein extra Array "zwischen" zu speichern und dann das obere Objekt an die position des davor vorhandenen Objektes zu speichern.

Dann wird das Model der Liste aktualisiert.

Allerdings klappt das nicht so ganz:

Code:
ArrayList<Szene> zwischen=new ArrayList<Szene>();
			
			int i = list.getSelectedIndex();
			
			Szene p=Drehbuch.szenen.get(i);
			zwischen.add(p);
			Drehbuch.szenen.remove(i);
			
			Szene s=Drehbuch.szenen.get(i-1);
			
			Drehbuch.szenen.set(i, s);
			Drehbuch.szenen.set(i-1, zwischen.get(0));
			
			listUpdate();
 
Zuletzt bearbeitet:
Denk mal darüber nach, was passieren würde, wenn das erste Element (Index 0) gerade selektiert wird.


Abgesehen davon: Am besten ist, wenn man einfach mal den Debugger anschmeißt und dann Schritt für Schritt die Befehle abarbeitet. Dann siehst man sehr schnell, bei welchem Befehl der Fehler passiert und dann auch warum.


Was ich zusätzliche nicht verstehe, warum du das entfernte Objekt in "zwischen" zwischenlagerst? Du könntest doch auch einfach direkt p wieder einfügen.
 
Ah jetzt habe ich es verstanden es lag an remove!
 
Zuletzt bearbeitet:
Zurück
Oben