ERLEDIGT
NEIN
NEIN
ANTWORTEN
29
29
ZUGRIFFE
889
889
EMPFEHLEN
-
Hallöchen,
ich hab da mal wieder ein, meiner meinung nach, einfaches Problem, aber ich komm einfach nicht auf die Lösung!!
Also ich habe eine .txt - Datei. Diese lese ich ein und speichere die Zeile in einen String. Diesen möchte ich dann "splitten". Den gesplitteten String speichere ich in ein Array. Und wenn ich das Array dann ausgeben möchte, bekomme ich nur komische Zeichen. Hat irgendjemand vielleicht eine Idee****
Hier mein Code:
Code :1 2 3 4 5 6 7 8
FileReader fr = new FileReader("vokabeln.txt"); BufferedReader br = new BufferedReader(fr); String vokabeln = br.readLine(); String[] vokabelnArray = vokabeln.split("//."); System.out.println(vokabeln.toString()); br.close();
Das Ergebnis ist dann immer: ÿþd
Hat vielleicht jemand eine Idee ?
-
Du gibst doch den ursprünglichen String aus

Was steht denn in der Datei?
-
Also in der Datei steht:
DeutschVokabel.Englischvokabel
Ich dachte er ließt die Zeile erst in einen String ein und dann splittet er diese Zeile beim punkt und speichert die einzelnen Wörter in dem Array.
-
Also ich hbe es jetzt geschafft, das er mir die Vokabeln in den String ließt, aber wenn ich den String ausgebe, ist nach jedem Buchstaben ein kleines Rechteck. Und ich bekomme die Vokabeln nicht in das Array...
-
Also bei mir geht das einlesen?
Zeig einmal den kompletten Code
edit: Hinter JEDEM Buchstaben ein Rechteck?
Häng am besten einmal die Textdatei hier an (die Originaldatei, nicht nur den Inhalt)Geändert von sheel (04.09.10 um 12:24 Uhr)
-
Okay hier ist mal der ganze Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
import java.awt.*; import java.awt.event.*; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import javax.swing.*; import javax.swing.event.*; /** * * Beschreibung * * @version 1.0 vom 03.09.2010 * @author */ public class Vokabeltrainer extends JFrame { // Anfang Attribute private JTextField jTextField1 = new JTextField(); private JPanel jPanel1 = new JPanel(null); private JLabel jLabel1 = new JLabel(); private JTextField jTextField2 = new JTextField(); private JPanel jPanel2 = new JPanel(null); private JLabel jLabel2 = new JLabel(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JButton jButton3 = new JButton(); // Ende Attribute public Vokabeltrainer(String title) throws IOException { // Frame-Initialisierung super(title); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); int frameWidth = 448; int frameHeight = 343; setSize(frameWidth, frameHeight); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int x = (d.width - getSize().width) / 2; int y = (d.height - getSize().height) / 2; setLocation(x, y); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten ImageIcon dFlagge = new ImageIcon("C:\\Dokumente und Einstellungen/Yanik2/workspace/Vokabeltrainer/src/dflagge.gif"); ImageIcon eFlagge = new ImageIcon("C:\\Dokumente und Einstellungen/Yanik2/workspace/Vokabeltrainer/src/eflagge.gif"); ImageIcon abbrechen = new ImageIcon("C:\\Dokumente und Einstellungen/Yanik2/workspace/Vokabeltrainer/src/abbrechen.jpg"); ImageIcon weiter = new ImageIcon("C:\\Dokumente und Einstellungen/Yanik2/workspace/Vokabeltrainer/src/weiter.jpg"); ImageIcon einstellung = new ImageIcon("C:\\Dokumente und Einstellungen/Yanik2/workspace/Vokabeltrainer/src/einstellungen.gif"); jTextField1.setBounds(120, 40, 297, 24); jTextField1.setText(""); cp.add(jTextField1); jPanel1.setBounds(24, 24, 88, 60); cp.add(jPanel1); jLabel1.setBounds(3, 0, 85, 56); jLabel1.setText(""); jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); jLabel1.setIcon(dFlagge); jPanel1.add(jLabel1); jTextField2.setBounds(120, 120, 297, 24); jTextField2.setText(""); cp.add(jTextField2); jPanel2.setBounds(24, 104, 89, 65); cp.add(jPanel2); jLabel2.setBounds(3, 0, 85, 64); jLabel2.setText(""); jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); jLabel2.setIcon(eFlagge); jPanel2.add(jLabel2); jButton1.setBounds(312, 264, 121, 33); jButton1.setText("Abbrechen"); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton1_ActionPerformed(evt); } }); jButton1.setIcon(abbrechen); cp.add(jButton1); jButton2.setBounds(208, 264, 97, 33); jButton2.setText("Weiter"); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton2_ActionPerformed(evt); } }); jButton2.setIcon(weiter); cp.add(jButton2); jButton3.setBounds(8, 264, 129, 33); jButton3.setText("Einstellungen"); jButton3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jButton3_ActionPerformed(evt); } }); jButton3.setIcon(einstellung); cp.add(jButton3); FileInputStream fis = new FileInputStream("vokabeln.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); InputStreamReader isr1 = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr1); String vokabeln = br.readLine(); String[] vokabelnArray = vokabeln.split("//."); System.out.println(Arrays.toString(vokabelnArray)); jTextField1.setText(vokabeln); br.close(); // Ende Komponenten setResizable(false); setVisible(true); } // Anfang Methoden public void jButton1_ActionPerformed(ActionEvent evt) { System.exit(0); } public void jButton2_ActionPerformed(ActionEvent evt) { // TODO hier Quelltext einfügen } public void jButton3_ActionPerformed(ActionEvent evt) { // TODO hier Quelltext einfügen } // Ende Methoden public static void main(String[] args) throws IOException { new Vokabeltrainer("Vokabeltrainer"); } }
Bitte seit nicht so streng mit den kleinen Fehler, das Programm ist noch nicht überarbeitet.
-
04.09.10 13:48 #7qqq Tutorials.de Gastzugang
Mach split("\\.")
nicht split("//.")
-
So vielen dank für eure hilfen. Ich habe es jetzt geschafft, die Vokabeln zu trennen. Aber wenn ich mir die Deutschvokabel anzeigen lasse, stehen da immer so Zeichen vor (Ausgabe: deutschvokabel). Bei der Englischvokabel funktioniert alles prima.
Aber wie bekomme ich diese Zeichen weg****
-
Hi,
am besten ist, wie sheel bereits geschrieben hat, du hängst mal die Original-Datei, die du einlesen willst, hier an einen Beitrag.
Gruß
Der Wolf
-
Okay hier die .txt-datei
-
05.09.10 22:22 #11
Das scheint an der Zeichenkodierung zu liegen. Laut meinem Editor ist die Textdatei in UTF-8 kodiert und ich vermute mal, dass du die Datei wohl in ANSI einliest.
Hier mal mein Test-Code:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
package de.tutorials.forum.hilfe.yax.vokabeldatei; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; public class VokabelnTest { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(new File("vokabeln.txt")), // Charset.forName("ISO-8859-1"))); Charset.forName("UTF-8"))); System.out.println(in.readLine()); in.close(); } }
Ausgabe mit UTF-8:
Ausgabe mit ISO-8859-1:deutschvokabel.englischvokabel
Wie man sieht, wird der Dateiinhalt beim Einlesen mit UTF-8-Kodierung richtig dargestellt.deutschvokabel.englischvokabelMan sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Suuuper, Danke
Jetzt hat es endlich geklappt. 
Aber ich hab schon wieder eine Frage
Und nähmlich, wenn ich in der Datei jetzt mehrere Zeilen mit Vokabeln stehen hab, also in der ersten Zeile "Mathe.math", in der zweiten "Hund.dog", und so weiter, wie kann ich es dann ermöglichen, dass wenn ich auf einen Button klicke das dann erst der erste Teil (vorm Punkt) der ersten Zeile in ein JLabel kommt und nach einer Eingabe in ein TextField überprüft wird ob es mit dem 2. Teil übereinstimmt. (Wahrscheinlich mit equals()) So und wenn ich wieder auf den Button drücke soll der 1. Teil der nächsten Zeile kommen, und immer so weiter...
Ich hab gedacht mit einer While-Schleife. Oder nicht?
-
Lass die Datei einfach offen (schließen erst am Programmende)
Sobald der Button gedrückt wurde, liest du eben eine Zeile ein...es ist sowieso von selber immer die nächste.
-
Also ich habe die Datei am Anfang des Programms geöffnet. Aber wenn ich jetzt einmalden Button drücke, er zeigt die Erste vokabel an. Aber wenn ich nochmal draufdrücke um die 2. Vokabel zu beckommen, bekomme ich eine Fehlermeldung und die erste Vokabel ist immer noch angezeigt.
(Wenn ich die Datei am Ende schließe gibt er nur eine Fehlermeldung aus.)
Hier mein Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public void actionPerformed(ActionEvent evt) { try { String vokabel = in.readLine(); String[] array = vokabel.split("\\."); jTextField1.setText(array[0]); System.out.println(vokabel); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Hier die Fehlermeldung :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Vokabeltrainer$2.actionPerformed(Vokabeltrainer.java:74) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Hat jemand eine Idee?
-
Welche ist denn die Zeile 74?
Ähnliche Themen
-
split-problem
Von newcode im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 18.01.09, 16:21 -
Problem mit split()
Von Kahmoon im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 08.03.07, 13:10 -
Problem mit split() und regex
Von verena4 im Forum JavaAntworten: 4Letzter Beitrag: 21.10.06, 17:18 -
Problem mit der Größe von split pane
Von Vierie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 29.07.06, 15:44 -
[MX 2004] Problem mit string.split
Von luke_the_duke im Forum Flash PlattformAntworten: 1Letzter Beitrag: 20.01.05, 14:48





Zitieren

Login




