tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
671
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Hallo Zusammen!

    Ich möchte eine Text-Datei auslesen, die folgendermaßen aufgebaut ist:

    Max, Mustermann
    Dagobert, Duck
    Micky, Maus

    Nun weiß ich zwar das man eine Zeile einer TextDatei mit
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class AusDateiLesen {
        public static void main(String [] args) throws IOException{
            FileReader read = new FileReader("D:\\Test\\TestDatei.txt");
            BufferedReader buffer   = new BufferedReader(read);
            
            String ausgabe = buffer.readLine();
            System.out.println(ausgabe);
        }
    }
    auslesen kann. Aber ich schaffe es nicht eine ganze Datei auszulesen...
    Ich hätte die Daten gern in einem 2 Dimensionalen Array.

    Danke für eure Hilfe!

    Grüße
    Saban
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Benutze bitte die Suche hier in diesem Forum.

    Damit findest du z.B. :http://www.tutorials.de/forum/java-g...-einlesen.html

    Suchbegriff BufferedReader
     

  3. #3
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Morgen!

    Danke für den Post... Hat mir geholfen
    Jetzt steh ich aber vor einem anderen Problem und zwar hab ich nun ein Array[192], dessen Inhalt wiedergeben werden soll nur nicht der Reihe nach sondern durcheinander... ich hab mir schon überlegt mit Math.random() ne Zahl erstellen zu lassen und diese dann als Index zu nehmen nur so viel ich weiß geht Math.random() doch nur bis 9 oder? ich will auch sicher stellen das wirklich jeder Inhalt nur einmal vor kommt.

    Kann mir jemand helfen?

    MfG
    Saban
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Math.random geht von 0.0 bis 1.0 muß also nur mit 191 multipliziert werden um Werte von 0-191 zu bekommen.

    Einfacher ist da aber vllt
    Random r = new Random();
    int random = r.nextInt(191);
     

  5. #5
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Hi!

    Danke für die schnelle Antwort! Ich werds ausprobieren!

    MfG
    Saban
     

  6. #6
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Da wäre es doch sinnvoller das Array zu mischen und es dann wiederzugeben. Oder willst du einfach jedes Mal zufällig eins ausgeben, auch wenn es irgendwann das selbe sein kann oder eins nie ausgegeben wurde?
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  7. #7
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Hi!
    Also ich wollte eigentlich mein Array mischen und dann wiedergeben und es sollte alles soweit wie möglich nur einmal ausgegeben werden...
    Nun habe ich aber bisschen was umgeschrieben (eigtl das ganze Programm von Grund auf neu gestaltet) und komm nicht mehr weiter ich weiß nicht ob ich grad aufm schlauch stehe oder ich wirklich vor nem Problem stehe... Ich kann nun nichts mehr in meine TextFields schreiben ich habe probiert es in der Klasse wo ich Sie erstelle mit setText zu setzen und durch meine "selbst geschriebene" Methode aber ich kann nichts mehr in die TextFields rein schreiben...
    Ich hoffe ihr könnt mir helfen...

    Hier mein Code zum Aufbau:
    Code java:
    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
    
    package Klasse_11_Quiz;
     
    import java.awt.Container;
    import java.awt.Font;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    import Klasse_11_Quiz.TextFeldBegrenzung;
     
    public class Aufbau {
        /* Klassenvariablen */
        private JFrame frame = new JFrame("Hauptstäde Quiz");
        private String str_pfad = "D:\\Programm Files\\Programmieren\\eclipse\\pics roland\\Symbole & Logos\\Symbole part 1\\32x32\\";
        private JTextField tf_land[] = new JTextField[5];
        private JTextField tf_stadt[]= new JTextField[tf_land.length];
        private JLabel lb_lösung[]   = new JLabel[5];
        private Font font = new Font("SansSerif", Font.BOLD, 14);
        
        /* Methoden zum Anzeigen und Ausblenden des Frames */
        public void anzeigen(boolean bool){
            frame.setVisible(bool);
        }
        
        /* Methoden zum Refreshen der Anzeige */
        public void refresh(){
            frame.repaint();
        }
        
        /* Methode zum einfügen der Länder mit jeweiligem Index */
        public void setLand(String land, int index){
            tf_land[index].setText(land);
        }
        
        /* Methode zur Abfrage der Eingabe bei den Städten mit jeweiligem Index */
        public String getStadt(int index){
            return tf_stadt[index].getText();
        }
        
        /* Methode zum ändern der Größe des Frames */
        public void setGröße(int x, int y){
            frame.setSize(x, y);
        }
        
        /* Konstruktor der Klasse Aufbau*/
        public Aufbau(){
            for(int index = 0; index < tf_land.length; index++){
                /* Initialisieren der TextFeld- und Label-Arrays */
                tf_land[index]  = new JTextField();
                tf_stadt[index] = new JTextField();
                lb_lösung[index]= new JLabel();
                
                /* Eigenschaften der TextFelder der Länder */
                tf_land[index].setHorizontalAlignment(JTextField.CENTER);
                tf_land[index].setDocument(new TextFeldBegrenzung(1));
                tf_land[index].setFont(font);
                tf_land[index].setEditable(false);
                
                /* Eigenschaften der TextFelder der Hauptstädte */
                tf_stadt[index].setHorizontalAlignment(JTextField.CENTER);
                tf_stadt[index].setDocument(new TextFeldBegrenzung(1));
                tf_stadt[index].setFont(font);
     
                /* Eigenschaften der Labels */
                lb_lösung[index].setIcon(new ImageIcon(str_pfad + "actions\\appointment-new.png"));
            }
        
            /* Container für die Komponenten auf dem Frame */
            Container c = frame.getContentPane();
            
            /* Layout des Frames */
            c.setLayout(null);
            
            /* Variablen zur Positionierung */
            int pos_x   = 10;
            int pos_y   = 10;
            int breite  = 150;
            int höhe    = 32;
            
            /* Layout der TextFelder der Länder */
            for(int index = 0; index < tf_land.length; index++){
                tf_land[index].setBounds(pos_x, pos_y, breite, höhe);
                pos_y = pos_y + 40;
            }
            
            pos_x   = breite + 20;
            pos_y   = 10;
            
            /* Layout der TextFelder der Städte */
            for(int index = 0; index < tf_land.length; index++){
                tf_stadt[index].setBounds(pos_x, pos_y, breite, höhe);
                pos_y = pos_y + 40;
            }
            
            pos_x   = 2 * breite + 30;
            pos_y   = 10;
            breite = 32;
            
            /* Layout der Labels */
            for(int index = 0; index < tf_land.length; index++){
                lb_lösung[index].setBounds(pos_x, pos_y, breite, höhe);
                pos_y = pos_y + 40;
            }
            
            /* Dem Container die Komponenten hinzufügen */
            for(int index = 0; index < tf_land.length; index++){
                c.add(tf_land[index]);
                c.add(tf_stadt[index]);
                c.add(lb_lösung[index]);
            }
        }
    }

    Hier mein Code zum Einlesen:
    Code java:
    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
    
    package Klasse_11_Quiz;
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class Einlesen {
        private String array[][] = new String[20][2];
        
        /* Methode zur Übergabe von Land und Stadt */
        public String getArray(int x, int y){
            return array[x][y];
        }
        
        /* Konstruktor */
        public Einlesen() throws IOException{
            FileReader read         = new FileReader("D:\\Programm Files\\Programmieren\\eclipse\\Schule\\StadtLand.txt");
            BufferedReader buffer   = new BufferedReader(read);
            
            String line = "";
            int x = 0; 
            int y = 0;
            
            do {                
                line = buffer.readLine();
                if(line != null){
                    String tmp[] = line.split(":");
                    
                    array[x][y]     = tmp[0];
                    array[x][y+1]   = tmp[1];
                    x = x + 1;
                }
                else{
                    break;
                }
            }while(true);
        }
    }

    Hier meine Textfeldbegrenzung:
    Code java:
    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
    
    package Klasse_11_Quiz;
     
    import javax.swing.text.PlainDocument;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.AttributeSet;
     
    /**
     * Diese Klasse ist ein Dokument für Textfelder, welches die Eingabe auf
     * x Zeichen begrenzt.
     *
     * Die Zuweisung geschieht über
     * JTextfield.setDocumenT(new Validation(int anzahl));
     */
    class TextFeldBegrenzung extends PlainDocument
    {
        private int limit;
     
        /**
         * Konstruktor für das Validationdokument
         * @param int limit: maximale Anzahl der einzugebenen Zeichen
         */
        public TextFeldBegrenzung(int newLimit)
        {
            super();
            if (limit < 0)
            {
                limit = 0;
            }
            else
            {
                limit = newLimit;
            }
        }
            
     
        private String mask = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private int maxLength = 12;
     
        public void insertString(int off, String str, AttributeSet a) throws BadLocationException
        {
            if(str.length()+getLength() > maxLength)
                return;
            if(mask.indexOf(str)==-1)
                return;
            super.insertString(off,str,a);    
        }
    }

    und hier meine Main:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    package Klasse_11_Quiz;
     
    import java.io.IOException;
     
    public class Quiz{
        public static void main(String [] args) throws IOException{
            Aufbau aufbau = new Aufbau();
            Einlesen einlesen = new Einlesen();
            
            aufbau.anzeigen(true);
            
            for(int index = 0; index < 5; index++){
                aufbau.setLand(einlesen.getArray(index, 0), index);
            }
        }
    }

    //Edit: 10.06.08 - 10.10 Uhr
    Ich habe nun raus gefunden das es an dem PlainDocument liegt aber habe keine Ahnung wieso. Ich habe das einfach die Zeile
    Code java:
    1
    
    tf_land[index].setDocument(new TextFeldBegrenzung(1));
    auskommentiert und nun gehts. Das PlainDocument hab ich schon mal bei einem anderen Projekt benutzt da lief es beim setText eigentlich reibungslos könnt ihr mir weiter helfen?

    MfG
    Saban
    Geändert von Saban (10.06.08 um 10:12 Uhr)
     

  8. #8
    unltd unltd ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    23
    Hallo,

    ich greife diesen Thread einfach mal auf, weil mein Problem es eigentlich nicht wert ist einen neuen Thread zu eröffnen. Eigentlich ist es todpeinlich aber es funktioniert einfach net.. Vielleicht liegt es am Montag morgen..

    Ich versuche etwas aus einer .txt Datei einzulesen und zu verarbeiten, doch es funktioniert einfach nicht.

    FileReader read;
    try {
    read = new FileReader("C:\\test.txt");

    BufferedReader buffer = new BufferedReader(read);

    String ausgabe;
    try {
    ausgabe = buffer.readLine();
    System.out.println(ausgabe);
    } catch (IOException e) {
    e.printStackTrace();
    }

    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }


    DAs ist die Ausgabe:
    java.io.PrintStream@3eca90java.io.PrintStream@64dc11

    mfg
    unltd
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von unltd Beitrag anzeigen
    DAs ist die Ausgabe:
    java.io.PrintStream@3eca90java.io.PrintStream@64dc11
    Das kommt vermutlich daher, weil genau das in der ersten Zeile der Datei drinsteht?

    Gruß

    PS: Bitte verwende die Code-Tags!
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    unltd unltd ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    23
    nein, da bin ich mir sicher das der Inhalt anders ist. Es handelt sich um eine Ausgabe eines Programmes, dieses Textfile will ich nun auf bestimmte Schlüsselworte überprüfen und die Daten in eine Datenbank füllen.

    Die erste Zeile der Datei sind Rauten...

    Hat sonst keiner eine Idee?
     

  11. #11
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Na dann hast dus doch... die Rauten sind das was du da wieder einliest. Lies doch mal die gesamte Datei ein, dann wirst du sehen dass da sonst auch noch was drin steht.
     

  12. #12
    unltd unltd ist offline Mitglied
    Registriert seit
    Aug 2008
    Beiträge
    23
    Es wird nur die oben genannte Ausgabe gezeigt. Sonst nichts.
    Dh die Datei ist sonst leer, aber wieso bekomme ich immer nur die referenz auf diesn PrintStream ?
     

  13. #13
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Na offenbar wird das so falsch reingeschrieben. Such doch mal den Code der die Datei schreibt.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 14.08.07, 19:51
  2. AWK Script - Daten aus mehreren Dateien
    Von NiciB im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 31.05.06, 17:05
  3. In Dateien schreiben und Dateien auslesen (z.B. User + Pwd)
    Von NeoHeadquarter im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 09.05.06, 13:44
  4. Verschieben von Daten in txt Dateien
    Von orben im Forum PHP
    Antworten: 9
    Letzter Beitrag: 16.03.06, 15:16
  5. Mit SUSE 9.3 auf NT4 Dateien/Daten zugreifen?
    Von preko im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 04.10.05, 09:22