Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
29
ZUGRIFFE
889
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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 ?
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.961
    Du gibst doch den ursprünglichen String aus
    Was steht denn in der Datei?
     

  3. #3
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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.
     

  4. #4
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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...
     

  5. #5
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.961
    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)
     

  6. #6
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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.
     

  7. #7
    qqq Tutorials.de Gastzugang
    Mach split("\\.")
    nicht split("//.")
     

  8. #8
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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****
     

  9. #9
    Der Wolf Der Wolf ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    153
    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
     

  10. #10
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    Okay hier die .txt-datei
    Angehängte Dateien Angehängte Dateien
     

  11. #11
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    564
    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:
    deutschvokabel.englischvokabel
    Ausgabe mit ISO-8859-1:
    deutschvokabel.englischvokabel
    Wie man sieht, wird der Dateiinhalt beim Einlesen mit UTF-8-Kodierung richtig dargestellt.
     
    Man 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 ;)

  12. #12
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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?
     

  13. #13
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.961
    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.
     

  14. #14
    yax yax ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    160
    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?
     

  15. #15
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.961
    Welche ist denn die Zeile 74?
     

Ähnliche Themen

  1. split-problem
    Von newcode im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 18.01.09, 16:21
  2. Problem mit split()
    Von Kahmoon im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 08.03.07, 13:10
  3. Problem mit split() und regex
    Von verena4 im Forum Java
    Antworten: 4
    Letzter Beitrag: 21.10.06, 17:18
  4. Problem mit der Größe von split pane
    Von Vierie im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 29.07.06, 15:44
  5. [MX 2004] Problem mit string.split
    Von luke_the_duke im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 20.01.05, 14:48

Stichworte