ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
671
671
EMPFEHLEN
-
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
auslesen kann. Aber ich schaffe es nicht eine ganze Datei auszulesen...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); } }

Ich hätte die Daten gern in einem 2 Dimensionalen Array.
Danke für eure Hilfe!
Grüße
Saban
-
Benutze bitte die Suche hier in diesem Forum.
Damit findest du z.B. :http://www.tutorials.de/forum/java-g...-einlesen.html
Suchbegriff BufferedReader
-
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
-
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);
-
Hi!
Danke für die schnelle Antwort! Ich werds ausprobieren!
MfG
Saban
-
09.06.08 08:28 #6
- 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:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
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/
-
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 Zeileauskommentiert 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?Code java:1
tf_land[index].setDocument(new TextFeldBegrenzung(1));
MfG
SabanGeändert von Saban (10.06.08 um 10:12 Uhr)
-
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
-
02.02.09 08:45 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
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?
-
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.
-
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 ?
-
Na offenbar wird das so falsch reingeschrieben. Such doch mal den Code der die Datei schreibt.
Ähnliche Themen
-
Verzweiflung mit dem schreiben von daten in dateien
Von ethciF im Forum PHPAntworten: 2Letzter Beitrag: 14.08.07, 19:51 -
AWK Script - Daten aus mehreren Dateien
Von NiciB im Forum Linux & UnixAntworten: 0Letzter Beitrag: 31.05.06, 17:05 -
In Dateien schreiben und Dateien auslesen (z.B. User + Pwd)
Von NeoHeadquarter im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 09.05.06, 13:44 -
Verschieben von Daten in txt Dateien
Von orben im Forum PHPAntworten: 9Letzter Beitrag: 16.03.06, 15:16 -
Mit SUSE 9.3 auf NT4 Dateien/Daten zugreifen?
Von preko im Forum Linux & UnixAntworten: 2Letzter Beitrag: 04.10.05, 09:22





Zitieren


Login





