Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Input Stream

1 view
Skip to first unread message

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 5:08:26 AM4/30/02
to
Hallo zusammen,
muß in ein Java Programm koordinaten von Stationen einlesen. Diese sind
folgendermaßen in einer anderen Datei abgespeichert:
"Art der Station ; X-Koordinate ; Y-Koordinate" - alles zahlen, die sich
in dieser Form Zeilenweise wiederholen. Wie lassen sich diese einlesen und
einzeln verschiedenen funktionen übergeben?
Vielen Dank
Gruß
Thibault


Ingo Horn

unread,
Apr 30, 2002, 5:11:31 AM4/30/02
to
Hi,

"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote
:

Hm.. hast Du das nicht schon in der Überschrift selbst erklärt?
Wie kommen denn die Daten? Permanenter Strom, oder werden sie in
regelmäßigen abständen einfach erneuert?
Müsste sich doch mit nem einfachen StringTokenizer leicht realisieren
lassen.
Oder ich verstehe Deine Frage nicht richtig.

CU Goin

--
Ein Bankier ist ein Mensch, der seinen Schirm verleiht,
wenn die Sonne scheint, und ihn sofort zurückhaben will,
wenn es zu regnen beginnt.
[Mark Twain (1835 - 1910)]

Mirko Tschäni

unread,
Apr 30, 2002, 5:17:13 AM4/30/02
to
hallo Thibault

mit
java.io.BufferedReader
java.util.StringTokenizer

BufferedReader br = new BufferedReader ( new FileReader (
"path/to/text/file.txt" );
String line;
whild ( ( line = br.readLine()) != null ) {
StringTokenizer st = new StringTokenizer ( line );

String station = st.nextToken();
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());

// hier was mit station, x und y machen
}

br.close();

gruss,

Mirko Tschäni

Robert Mahnke

unread,
Apr 30, 2002, 5:21:45 AM4/30/02
to
> muß in ein Java Programm koordinaten von Stationen einlesen. Diese sind
> folgendermaßen in einer anderen Datei abgespeichert:
> "Art der Station ; X-Koordinate ; Y-Koordinate" - alles zahlen, die sich
> in dieser Form Zeilenweise wiederholen. Wie lassen sich diese einlesen und
> einzeln verschiedenen funktionen übergeben?

Ungetestet:

try {
BufferedReader in = new BufferedReader(
new FileReader("NameDerDatei"));
String line;
while ( (line = in.readLine()) != null) {
StringTokenizer tok = new StringTokenizer(line, ";");
int art = Integer.parseInt(tok.nextToken());
int x = Integer.parseInt(tok.nextToken());
int y = Integer.parseInt(tok.nextToken());
/* Hier was mit art x, und y machen */
}
}
catch(Exception e) {
e.printStackTrace();
}

> Vielen Dank

Bitte, bitte. Ich hoffe das läuft.

Schneller wird das ganze wenn man es mit StreamTokenizer macht.

Gruss
Robert Mahnke


Thibault Meyer-Jüres

unread,
Apr 30, 2002, 5:31:11 AM4/30/02
to
Heißt das der Tokenizer erkennt die ";" und springt dann jeweils zum
nächsten Argument?
Wenn ich jetzt alle Zeilen einlesen möchte muß ich doch noch ne weitere
Schleife einbauen, oder?
Kann mein Textfile ein "CSV" File sein?
Hab vielen Dank !!!

"Mirko Tschäni" <mi...@tonia.ch> schrieb im Newsbeitrag
news:aalni7$lqq$1...@news.magnet.ch...

Mirko Tschäni

unread,
Apr 30, 2002, 5:37:08 AM4/30/02
to
> Heißt das der Tokenizer erkennt die ";" und springt dann jeweils zum
> nächsten Argument?

oops, das sollte natürlich
StringTokenizer st = new StringTokenizer(line, ";");

heissen...

StringTokenizer nimmt " " als standard trennzeichtn.

StringTokenizer nimmt ein beliebiges tennzeichen und bietet die
public String nextToken() methode, um ein teilstring nach dem andern zu
durchlaufen.

> Wenn ich jetzt alle Zeilen einlesen möchte muß ich doch noch ne weitere

die erste schleiffe

> > whild ( ( line = br.readLine()) != null ) {

"geht durch " die zeilen, für die einzelnen felder
brauchst du keine schleiffe, da es sich ja um (wenn ich das richtig
versanden hab)
drei im voraus bekannte felder ( art, x , y ) handelt.

> Schleife einbauen, oder?

> Kann mein Textfile ein "CSV" File sein?

CSV dateien sind textdateien : - )


gruss,
MirkoTschäni

Martin Erren

unread,
Apr 30, 2002, 5:42:56 AM4/30/02
to

"Mirko Tschäni":

> StringTokenizer nimmt " " als standard trennzeichtn.

Genauer gesagt, alle whitespace Zeichen, also [\n\r\t ]+

new StringTokenizer("\n\r\t");


Gruss: Martin


Thibault Meyer-Jüres

unread,
Apr 30, 2002, 5:47:13 AM4/30/02
to
Wofür stehen:

"catch(Exception e) {
e.printStackTrace();
}"

Gruß
Thibault

"Robert Mahnke" <Robert...@web.de> schrieb im Newsbeitrag
news:aalnlr$u5j$00$1...@news.t-online.com...

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 5:48:31 AM4/30/02
to
Okay, das müßte passen, danke!
Letzte Frage was macht das br.close()?

"Mirko Tschäni" <mi...@tonia.ch> schrieb im Newsbeitrag

news:aaloni$m4o$1...@news.magnet.ch...

Ingo Horn

unread,
Apr 30, 2002, 5:50:42 AM4/30/02
to
"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote
:

> Okay, das müßte passen, danke!
> Letzte Frage was macht das br.close()?
>

Den Reader schließen?

http://learn.to/quote

Mirko Tschäni

unread,
Apr 30, 2002, 5:55:04 AM4/30/02
to

"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote in message
news:aalp7m$jp$1...@nets3.rz.RWTH-Aachen.DE...

> Okay, das müßte passen, danke!
> Letzte Frage was macht das br.close()?

es schliesst den stram
wenn du es nicht aufruffst wir er soviel ich weiss beim beenden des
programms implizit geschlossen. es empfielt sich allerdings trotzdem
die close() methode aufzuruffen. ( zum beispiel kann es vorkommen, das
andere applikationen beim zugriff auf die betroffene datei mekkern wenn du
noch einen stream "offen" hast auf die datei.

schau dir mal die api dokumentation an...

http://java.sun.com/j2se/1.4/docs/api/index.html


Robert Mahnke

unread,
Apr 30, 2002, 6:12:48 AM4/30/02
to
> Wofür stehen:
>
> "catch(Exception e) {
> e.printStackTrace();
> }"

Es könnten in diesem Block Exceptions geworfen werden.
(IOException oder FileNotFoundException)
Ohne einen try-catch Block kannst du diesen Code
garnicht fehlerfrei kompilieren.

Zu java.lang.Exception#printStackTrace() schau am bestem mal
in die API, hier ein Auszug:

Prints this throwable and its backtrace to the standard error stream.
This method prints a stack trace for this Throwable object on the
error output stream that is the value of the field System.err.
The first line of output contains the result of the toString()
method for this object. Remaining lines represent data previously
recorded by the method fillInStackTrace() . The format of this
information depends on the implementation, but the following example
may be regarded as typical:

java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)

usw...


Gruss

Robert

Robert Mahnke

unread,
Apr 30, 2002, 6:19:35 AM4/30/02
to
Ach ja,

es tut nicht Not, dass du immer das hanze Posting unten
dranhängst bei deinen Antworten. Ich glaube jemand hat
das mit http://learn.to/quote schon angedeutet.

Gruss
Robert

PS: Den BufferedReader sollte man natürlich, wenn man
fertig ist auch wieder schliessen (in.close);
wie in dem anderen Beispiel.

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 9:50:19 AM4/30/02
to
Ich bekomme tatsächlich ne Fehlermeldung, ohne die catch Anweisung, heißt
das die Daten werden nicht korrekt eingelesen?


Thibault Meyer-Jüres

unread,
Apr 30, 2002, 9:52:48 AM4/30/02
to
Lassen sich die eingelesenen Daten, testteshalber vielleicht auch ausgeben?


Ingo Horn

unread,
Apr 30, 2002, 10:10:39 AM4/30/02
to
"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote
:

> Lassen sich die eingelesenen Daten, testteshalber vielleicht
> auch ausgeben?
>

Sicher.
Wohin hättest Du sie denn gern?

Goin

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 10:13:31 AM4/30/02
to
Ist mir eigentlich egal, nur um mal zu sehen, ob er alles eingelesen
hat.....


Ingo Horn

unread,
Apr 30, 2002, 10:21:15 AM4/30/02
to
"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote
:

> Ist mir eigentlich egal, nur um mal zu sehen, ob er alles
> eingelesen hat.....


System.out.println() gibt einen String auf der Konsole aus. Das ist
eigentlich eine ziemlich einfache Methode.


Ingo

Robert Mahnke

unread,
Apr 30, 2002, 10:21:26 AM4/30/02
to
> Ich bekomme tatsächlich ne Fehlermeldung, ohne die catch Anweisung, heißt
> das die Daten werden nicht korrekt eingelesen?

Nein!
Schon das Kompilieren schlägt fehlt, da JAVA an dieser Stelle
einen try-catch Block erwartet.

Robert


Robert Mahnke

unread,
Apr 30, 2002, 10:23:09 AM4/30/02
to
> Ist mir eigentlich egal, nur um mal zu sehen, ob er alles eingelesen
> hat.....

In der while-Schleife am Ende ein
System.out.println("art: " + art + " / x: " + x + " / y: " + y);
gibt jede Zeile auf der Konsole aus.

Robert


Thibault Meyer-Jüres

unread,
Apr 30, 2002, 10:33:07 AM4/30/02
to
Ich bin echter Anfänger was JAVA betrifft, sorry für die doofen fragen...
Habe bisher nur über den Browser das Aplet gestartet, wie läuft das mit der
Konsole?


Ingo Horn

unread,
Apr 30, 2002, 10:35:38 AM4/30/02
to
"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote
:

> Ich bin echter Anfänger was JAVA betrifft, sorry für die doofen
> fragen... Habe bisher nur über den Browser das Aplet gestartet,
> wie läuft das mit der Konsole?


Was für einen Browser verwendest Du denn? Plug-In oder interne VM?

Mag sein, dass du das am Anfang mal irgendwann erwähnt hast....

Ingo

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 10:37:53 AM4/30/02
to
Den Internet-explorer benutze ich


Aljoscha Rittner

unread,
Apr 30, 2002, 10:37:07 AM4/30/02
to
Thibault Meyer-Jüres schrieb:

> Lassen sich die eingelesenen Daten, testteshalber vielleicht auch ausgeben?

System.out.println (...)

Übrigens jetzt zitierst du zu wenig. Nicht einfach nur stoisch
reagieren sondern vielleicht *wirklich* nachlesen, was auf
http://learn.to/quote steht.

Ach so, da wir gerade beim Lesen sind. Kennst du diese Seite:

http://java.sun.com/j2se/1.3/docs/api/index.html

?

Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )
[INFO] - Allgemeine Infos, z.B. Links auf Webseiten - keine Frage
[DISCUSSION] - Diskussion zu einem Java-spezifischen Thema - keine Frage
[ANNOUNCE] - Vorstellung neuer Software (möglichst nicht Kommerziell)

Ingo Horn

unread,
Apr 30, 2002, 10:47:36 AM4/30/02
to
"Thibault Meyer-Jüres" <Thibaul...@post.rwth-aachen.de> wrote :

> Den Internet-explorer benutze ich
>


Muss man Dir denn alles aus der Nase ziehen? Welche Version?
Naja, normalerweise findest Du unter Extras->Internetoptionen-
>Erweitert einen Abschnitt Java. Da könnte dann Java Konole
aktivieren stehen. Wenn nicht, melde Dich noch mal.

Goin

Thibault Meyer-Jüres

unread,
Apr 30, 2002, 10:54:24 AM4/30/02
to
Vielen Dank nochmal, hat geklappt - wünsche nen schönen ersten Mai
Gruß
Thibault


Michael Schmidt

unread,
Apr 30, 2002, 10:55:31 AM4/30/02
to
Thibault Meyer-Jüres wrote:

> Den Internet-explorer benutze ich
>
>
>

Etwas vom Vorposter kannst du schon stehen lassen, nur wegschneiden, was
nicht zum Zusammenhang gehört.

Wenn du noch eine Version des IE mit Java-VM hast (5.5), kannst du unter
Extras|Internetoptionen die Java-Konsole aktivieren.

Danach ist sie unter Ansicht zu finden.

Micha

--
Homepage & FAQ von de.comp.lang.java: http://www.dclj.de

Thibault Meyer-Jüres

unread,
May 1, 2002, 8:46:54 AM5/1/02
to
Hab alles Tips übernommen / befolgt Quellcode sieht folgendermaßen aus:
{
try{
int i=0;
BufferedReader br= new BufferedReader (new
FileReader("Daten.csv"));
String line;
while ((line=br.readLine())!=null){

StringTokenizer st = new StringTokenizer(line,";");
int stat = Integer.parseInt(st.nextToken());

int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
node[i].stat = (int) stat;
node[i].x = (int) (x * graphWidth);
node[i].y = (int) (y * graphHeight);
node[i].color = Color.blue;
node[i].isConnected = false;
node[i].isRoot = false;
node[i].clusterNo = -1;
node[i].isClusterConnectedToRoot = false;
noOfNodes=i;
i=i+1;
System.out.println("stat: " + stat + " / x: " + x + " / y: " +
y);
System.out.println(node[i].stat);
}
br.close();
}
catch(Exception e)
{e.printStackTrace();}

Die Ausgabe stat/x/y gibt die korekten Werte aus der eingelesenen Datei aus.
Die Ausgabe node[i].stat wie auch *./x *./y geben jeweils Null aus.
Hab ich bei der Zuweisung was falsch gemacht?


Robert Mahnke

unread,
May 1, 2002, 9:14:42 AM5/1/02
to
> {
> try{
> int i=0;

[Code]

> node[i].stat = (int) stat;

[Code]

> i=i+1;
^^^^^^
Hier zählst du schon einen hoch...

> System.out.println("stat: " + stat + " / x: " + x + " / y: " +
> y);
> System.out.println(node[i].stat);

^^^^^^^^^^^^^^^^^^^^^^^^^
...hier gibst du dann den nächsten node aus, in dem
natürlich noch nichts steht


Gruss
Robert


Thibault Meyer-Jüres

unread,
May 2, 2002, 2:27:54 AM5/2/02
to
Alles klar, es läuft :-)!
Danke Dir!
Gruß
Thibault


0 new messages