Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
servus,
ich möchte aus dem code stück zwei methoden basteln, brings aber ums sterben nicht hin
die eine soll den reader weitergeben, so daß die zweite methode mit dem streamtokenizer damit arbeiten kann.
die zweite soll den string "eingeleseneDateien[ ][ ]" weitergeben...
Java:
public static void main(String[] args) throws FileNotFoundException, IOException {
Reader reader = new BufferedReader(new FileReader("datei.txt"));
StreamTokenizer tokens = new StreamTokenizer(reader);
tokens.slashStarComments(true);
tokens.ordinaryChar('.');
tokens.parseNumbers();
int x = 0;
int y = 0;
int aufnullstellen = 0;
String eingeleseneDaten[][] = new String[52][17];
for (int tval; (tval = tokens.nextToken()) != StreamTokenizer.TT_EOF;) {
//zahlen werden auf y++ gesetzt
if (tval == StreamTokenizer.TT_NUMBER) {
//System.out.println(x+"y-wert");
double wert = Double.valueOf(tokens.nval);
eingeleseneDaten[x][y] = (Double.valueOf(wert)).toString();
y++;
}
//worte werden die x koordinate wird um eins erhöht, und auf y0 gesetzt
if (tval == StreamTokenizer.TT_WORD) {
x++;
y = aufnullstellen;
y++;
}
}
}
die erste methode stelle ich mir ungefähr so vor..und natürlich funktionierts so nicht ...
Java:
public Filereader Reader (reader) throws FileNotFoundException, IOException {
Reader reader = new BufferedReader(new FileReader("datei.txt"));
return reader;
}
public Filereader Reader (reader) throws FileNotFoundException, IOException {
Reader reader = new BufferedReader(new FileReader("datei.txt"));
return reader;
}
Das ist ja auch keine gültige Methode. Zum Einen ist der Name verwirrend, weil es auch eine Klasse gibt die so heißt und zum anderen ist der Parameter falsch (ohne Datentyp). Rückgabetypen passen auch nicht zueinander ... Eigentlich ist fast alles falsch
Ich vermute du meinst sowas:
Java:
public Reader createReader(String filename) throws IOException
{
return new BufferedReader(new FileReader(filename));
}
public Filereader Reader (reader) throws FileNotFoundException, IOException {
Reader reader = new BufferedReader(new FileReader("datei.txt"));
return reader;
}
Das ist ja auch keine gültige Methode. Zum Einen ist der Name verwirrend, weil es auch eine Klasse gibt die so heißt und zum anderen ist der Parameter falsch (ohne Datentyp). Rückgabetypen passen auch nicht zueinander ... Eigentlich ist fast alles falsch
Ich vermute du meinst sowas:
Java:
public Reader createReader(String filename) throws IOException
{
return new BufferedReader(new FileReader(filename));
}
ich stelle mir das so vor...ich habe einige dateien, die ich mit der zweiten funktion auslesen möchte...mein gedanke war, dann einfach für jede datei einen entsprechenden reader zu machen, und damit dann die zweite funktion zu überladen.
Der RückgabeTyp den dem im Kopf der Methode nennst muss mit dem übereinstimmen, den du IN der Methode zurückgibst.
Java:
public BufferedReader Reader(){ // sagt: Rückgabe ist vom Typ BufferedReader
Reader reader = new BufferedReader(new FileReader("datei.txt"));
StreamTokenizer tokens = new StreamTokenizer(reader);
return tokens; // gibt aber einen StreamTokenizer zurück!
}
*EDIT: Schon gesehen dass du es korrigiert hast... *
Bei deinem Vorhaben scheint es aber sinnvoller, die ganze Arbeit in eine Methode zu packen, weil du für zwei Zeilen keine eigene Methode brauchst. Mach also eher eine, die als Parameter die Datei bekommt und als Rückgabe die eingelesenen Daten liefert. Etwa so:
Java:
public String[][] parseFile(String filename) throws IOException
{
// ... dein code ...
String[][] eingeleseneDaten = new String[52][17];
// ... dein code ...
return eingeleseneDaten;
}
Solch eine Methode könntest du von anderswo dann immer aufrufen:
Also auch meine Meinung: Das Erstellen eines Tokenizers muss man in dem Fall nicht extra kapseln. Aber ich weiß auch nicht genau, was du mit denen vorhast
das argument hat was für sich...im momet sieht es so aus:
Java:
public static String[][] Dateneinlesen(String[][] dateiname)throws IOException{
Reader reader =new BufferedReader(new FileReader("dateiname"));
StreamTokenizer tokens = new StreamTokenizer(reader);
tokens.slashStarComments(true);
tokens.ordinaryChar('.');
tokens.parseNumbers();
//tokens.eolIsSignificant(true);
//int i = 0;
int x = 0;
int y = 0;
int aufnullstellen = 0;
String eingeleseneDaten[][] = new String[52][17];
for (int tval; (tval = tokens.nextToken()) != StreamTokenizer.TT_EOF;) {
//zahlen werden auf y++ gesetzt
if (tval == StreamTokenizer.TT_NUMBER) {
//System.out.println(x+"y-wert");
double wert = Double.valueOf(tokens.nval);
eingeleseneDaten[x][y] = (Double.valueOf(wert)).toString();
y++;
}
//worte werden auf y0 gesetzt und x koordinate um eins erhöht
if (tval == StreamTokenizer.TT_WORD) {
x++;
y = aufnullstellen;
y++;
}
}
return eingeleseneDaten;
}
irgendwie steh ich da jetzt ganz furchtbar auf dem schlauch...mit der umsetzung dieser methode ;(
klar, "nur" den dateinamen ändern ist es die bequemste lösung, aber ich "sehe" gerade nicht wie ich das bewerkstelligen soll...