Input/Output Textdatei auslesen

Fab1

Top Contributor
Hallo Leute,

der ein oder andere von euch kennt ja sicherlich die Quizkarten Aufgabe vom Buch Java von Kopf bis Fuß. Dies hab ich versucht zu programmieren (ab und zu mal abgeschaut) :)

Nun bin ich auf ein Problem gestoßen beim Auslesen von längeren Fragen/Antworten. Ich hab mal eine Anlage angehängt, so sieht jede Frage aus.

Außerdem habe ich die .jar Datei angehängt, bei der das Problem auftritt, sieht bisschen anders aus aber nicht viel. Um eine Datei zu laden muss man den Modus auf "Lernen" ändern.


Java:
public void dateiLaden(File datei){
		
		String zeile = null;
		
		
		try{
			BufferedReader reader = new BufferedReader(new FileReader(datei)); 		// Datei die geladen werden soll, muss ausgewählt werden.
			
			while((zeile = reader.readLine()) != null){
							
				String[]items = zeile.split("/");
	
			if(items.length==2){
				EineKarte karte = new EineKarte(items[0], items[1]);
				kartenListe.add(karte);	
			}else{
				System.out.println("Bei items läuft was falsch");
			}
		}
			reader.close();

			
		}catch(IOException ex){
			ex.printStackTrace();
		}
	}

beim einlesen/laden der angehängten Datei bekomme ich 8 mal die Meldung "Bei Items läuft was falsch".

Die meisten werden sich das wahrscheinlich ansehen und sich gleich auskennen, aber trotzdem nochmal eine kleine Erklärung.

Eine Zeile wird eingelesen und bei "/" gesplittet und dem Array items zugewiesen. Somit hat das Array immer den Index 0 und 1. Dies wird dann dem Konstruktor der EineKarte Klasse übergeben und eine neue Karte erzeugt.
Wobei der Index 0 der Frage und der Index 1 der Antwort entspricht.
das EineKarte Objekt wird dann einer ArrayList hinzugefügt und irgendwann ausgegeben.

Zum testen hab ich mir mal gedacht die Länge des Arrays muss ja immer 2 sein, ansonsten läuft ja was falsch. (wenn es anders ist verbessert mich)

Nun meine Frage warum bekomme ich die Konsolenausgabe bei der else-Anweisung 8 mal?

In der Textdatei sind 27 Fragen, allerdings werden mir, wenn ich die Fragen beim Ausführen durch klicke nur 25 angezeigt. (Wer Lust hat kannst mal testen ) :)

Zum Test hab ich den Code mal auf "eine gute Zeile" gekürzt und dann erhalte ich die Konsolenausgabe nur noch 2 mal, aber das kann ja wohl nicht die Lösung sein.

Das ist natürlich nicht der ganze Quelltext, aber zumindest der Teil in dem ich den Fehler vermute. Ansonsten Bescheid sagen.

Ich hoffe jemand von euch kann mir weiterhelfen.

Vielen Dank.
 

Anhänge

  • Anwendungsentwicklung.txt
    3,4 KB · Aufrufe: 8
  • VokabelTrainer.jar
    22,4 KB · Aufrufe: 2
G

Gast2

Gast
Nachdem ich die Textdatei zum Laden ausgewählt habe bekomm ich folgende Meldung, vielleicht hat die ja was mit deinem Problem zu tun:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at GuiErstellen.dateiLaden(GuiErstellen.java:267)
at GuiErstellen$LoadItemListener.actionPerformed(GuiErstellen.java:173)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 

Fab1

Top Contributor
Servus,

gut zu wissen, ich bekomm in Eclipse zwar keine Fehlermeldung, aber dies hat sicherlich etwas damit zu tun. Ich weis natürlich was die Fehlermeldung bedeutet, nur warum sie auftritt darüber bin ich mit atm noch nicht im klaren. Danke soweit. Ich schau es mir an.
 
N

nillehammer

Gast
Schau Dir die Datei, die Du einliest, mal genau an. Einige Zeilen enthalten garkein "/". Dort ist die Länge Deines Arrays dann 1. Andere Zeilen enthalten mehrere "/". Dort ist die Länge dann > 2.

Du kannst also nicht mit split arbeiten. Du muss mit indexof und substr arbeiten, um die Fragen zu füllen. Dabei musst Du sogar noch einen Sonderfall einprogrammieren:
- Zeile enthält kein "/" ==> Sie gehört zu der zuletzt gespeicherten Antwort
 
Zuletzt bearbeitet von einem Moderator:

Fab1

Top Contributor
Schau Dir die Datei, die Du einliest, mal genau an. Einige Zeilen enthalten garkein "/". Dort ist die Länge Deines Arrays dann 1. Andere Zeilen enthalten mehrere "/". Dort ist die Länge dann > 2.

Du kannst also nicht mit split arbeiten. Du muss mit indexof und substr arbeiten, um die Fragen zu füllen. Dabei musst Du sogar noch einen Sonderfall einprogrammieren:
- Zeile enthält kein "/" ==> Sie gehört zu der zuletzt gespeicherten Antwort

Hi,

ich glaub ich darf jetzt nicht laut sagen, dass ich mir gestern den Text sicherlich 30 Minuten angeschaut und auf solche Fehler überprüft habe. Allerdings hab ich die 2 Zeilen, in denen zweimal "/" vor kam übersehen. Ich hab die jetzt erst einmal gelöscht. Und siehe das es funktioniert. Den von dir genannten Sonderfall schreib ich mir mal auf und werde ihn dann später mal einbauen.

Jetzt funktioniert alles, das einlesen und bearbeiten der Datei sowie das ausgeben der Fragen.

Doch eine Frage habe ich noch, warum wird beim Laden ab und zu der else-Block aufgerufen, das hab ich bis jetzt noch nicht kapiert, vor allem weil die EineKlasse Objekte ja trotzdem erstellt werden.

Vielen Dank für die Mühe an alle.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
K Textdatei auslesen Java Basics - Anfänger-Themen 10
L Namen aus Textdatei auslesen Java Basics - Anfänger-Themen 1
S Methoden Textdatei auslesen Java Basics - Anfänger-Themen 11
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
S Methoden Textdatei Teil String auslesen Java Basics - Anfänger-Themen 3
W letzte Zeile aus wachsender Textdatei auslesen Java Basics - Anfänger-Themen 5
P Mit offset aus Textdatei auslesen Java Basics - Anfänger-Themen 3
V Falsches Auslesen von Textdatei Java Basics - Anfänger-Themen 3
T Input/Output 20Mb Textdatei zeilenweise auslesen Java Basics - Anfänger-Themen 10
N In Textdatei speichern und auslesen Java Basics - Anfänger-Themen 18
K Input/Output Textdatei scheibchenweise auslesen Java Basics - Anfänger-Themen 8
D 1 Wort aus TextDatei auslesen Java Basics - Anfänger-Themen 3
B OOP Aus Textdatei auslesen Java Basics - Anfänger-Themen 11
M Update-Ticker... String in Textdatei schreiben und auslesen Java Basics - Anfänger-Themen 5
S Datentypen Array in Textdatei speichern und auslesen Java Basics - Anfänger-Themen 16
A Textdatei von URL auslesen und in Datei schreiben Java Basics - Anfänger-Themen 5
G Textdatei auslesen lassen Java Basics - Anfänger-Themen 5
G Textdatei in Java auslesen Java Basics - Anfänger-Themen 5
G bestimmte Stelle aus Textdatei auslesen. Java Basics - Anfänger-Themen 7
T Textdatei komplett auslesen Java Basics - Anfänger-Themen 6
G Auslesen einer bestimmten Stelle in einer Textdatei? Java Basics - Anfänger-Themen 2
S Datei auslesen und neue schreiben (keine Textdatei) Java Basics - Anfänger-Themen 2
M Auslesen aus Textdatei Java Basics - Anfänger-Themen 12
N Textdatei zeilenweise auslesen Java Basics - Anfänger-Themen 8
I Query aus Textdatei auslesen? Java Basics - Anfänger-Themen 4
M Fehler beim ein- und auslesen einer Textdatei Java Basics - Anfänger-Themen 5
C Textdatei unter Linux/Solaris auslesen bzw. ändern Java Basics - Anfänger-Themen 2
G Textdatei auslesen - Text anfügen - FileReader Java Basics - Anfänger-Themen 18
G Wie kann ich mit Java eine Textdatei auslesen? Java Basics - Anfänger-Themen 20
G nur bestimmte zeile aus textdatei auslesen Java Basics - Anfänger-Themen 2
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
izoards Textdatei Human unreadable abspeichern Java Basics - Anfänger-Themen 17
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
M Datenbank oder Textdatei? Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
S Importieren einer Textdatei Java Basics - Anfänger-Themen 2
x-tshainge Innerhalb von Textdatei addieren Java Basics - Anfänger-Themen 9
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
JDimi Textdatei mit beliebig vielen Zeilenumbrüchen erstellen Java Basics - Anfänger-Themen 2
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
C Input/Output Textdatei vom Java-Programm nicht geladen Java Basics - Anfänger-Themen 58
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
T Länge einer Textdatei Java Basics - Anfänger-Themen 11
S Übertragen einer Textdatei in ein 2d-Array Java Basics - Anfänger-Themen 2
T Textdatei öffnen und ans Ende scrollen Java Basics - Anfänger-Themen 11
J Textdatei filtern und bearbeiten Java Basics - Anfänger-Themen 1
C Textdatei oder doch eine Datenban Java Basics - Anfänger-Themen 15
J Input/Output Tilemap effizient speichern als Textdatei Java Basics - Anfänger-Themen 7
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
M Textdatei(en) in .jar schreiben Java Basics - Anfänger-Themen 5
H Input/Output Inhalt einer GUI in Textdatei speichern Java Basics - Anfänger-Themen 1
K Erste Schritte Textdatei -> Array Java Basics - Anfänger-Themen 1
F Textdatei einlesen in ArryList (Objekte abspeichern?) Java Basics - Anfänger-Themen 4
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
G Erste Schritte Textdatei einlesen und in Array speichern Java Basics - Anfänger-Themen 5
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
E Textdatei kopieren funktioniert nicht Java Basics - Anfänger-Themen 12
M Zweidimensionales Array aus Textdatei gewinnen Java Basics - Anfänger-Themen 6
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
T Textdatei beschreiben/bearbeiten Java Basics - Anfänger-Themen 4
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
R Werte in eine Textdatei schreiben Java Basics - Anfänger-Themen 20
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
D Textdatei in geschachtelte Array speichern Java Basics - Anfänger-Themen 17
T Scanner für große Textdatei Java Basics - Anfänger-Themen 11
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
P Input/Output Textdatei einlesen - 1. Zeichen fehlt Java Basics - Anfänger-Themen 7
J Input/Output Textdatei in einer JAR lesen Java Basics - Anfänger-Themen 3
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
S Textdatei im Internet lesen und editieren Java Basics - Anfänger-Themen 2
J Textdatei einlesen und ausgeben - NullPointerException Java Basics - Anfänger-Themen 5
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
P CSV Daten in Textdatei Speichern Java Basics - Anfänger-Themen 3
K Input/Output Eingelesenedaten von Scanner als Textdatei ausgeben? Java Basics - Anfänger-Themen 2
N Input/Output Konsolenausgabe in Textdatei speichern/umleiten Java Basics - Anfänger-Themen 7
V Auf Textdatei in jar zugreifen Java Basics - Anfänger-Themen 3
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
H Zeile aus Textdatei lesen und in Textfield schreiben Java Basics - Anfänger-Themen 4
J durch drücken eines buttons text in einer textdatei speichern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben