ich versuche gerade auf einem Textfile zu arbeiten. Im Textfile stehen Integers, sie sind in Zeilen und Spalten angeordnet. Sie beschreiben ein Grauwertbild.
Ich hab das Feld als String gelesen, und mir ausgeben lassen, um zu sehen obs geht.
Wie kann ich das gelesene denn ich eine Variable speichern, geschweige denn in eine array-Form (im Float Format) ?
Man müßte wissen, wie viele Einträge in der Datei stehen, dann könnte man vorher den Array der passenden größe Anlegen. Ansonsten muss man was mit
List<Float> list = ...
list.add(Float.parseFloat(eintragAusDerZeile));
machen, und das nachher in einen float-Array kopieren. Nicht so schön, aber ohne zu wissen, wie viele Einträge es sind, gibt es kaum schönere Alternativen...
nein nicht immer aber an dem Ding soll zunächst mal was abgearbeitet werden, danach kümmere ich mich darum, wie man auf flexible Eingabegrößen reagiert.
Vielen Dank für deine Hilfe
---------------------------
das Problem, das ich allerdings immer noch habe: Wie speichere ich das Eingelesene? Bisher les ichs ja nur ein und gebs über die Konsole wieder aus.
Nimmt man dazu nen
nein nicht immer aber an dem Ding soll zunächst mal was abgearbeitet werden, danach kümmere ich mich darum, wie man auf flexible Eingabegrößen reagiert.
Das Problem ist, dass die Anpassung auf flexible Eingabrgrößen in diesem Fall einen Neuschreiben schon sehr nahe käme. (Es geht nur um ein paar Zeilen, eigentlich Pillepalle, aber wenn man für diese Zeilen noch recth lange braucht, kann es doch ärgerlich sein).
Was genau die Frage ist, ist mir nicht ganz klar. Dort, wo
System.out.println(zeile);
steht, zerlegt man die Zeile in einzelne Zahlen (z.B. mit String#split), und speichert die nacheinander in einer Liste, wie oben bschrieben.
Danke für Eure Antworten, ich hab noch einen älteren Beitrag dazu gefunden und mich davon inspirieren lassen:
Java:
importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.util.StringTokenizer;publicclassMatrize1{publicstaticvoidmain(String[] args)throwsIOException{double matrix[][]=newdouble[61][51];String line;// String über eine einzelne CodelineFileReader in =newFileReader("TESTFELD.txt");BufferedReader br =newBufferedReader(in);StringTokenizer tokenizer =null;for(int z =0; z <61; z ++){
line = br.readLine();if(line !=null){
tokenizer =newStringTokenizer(line);while(tokenizer.hasMoreTokens()){for(int s =0; s <51; s++){
matrix[z][s]=Float.parseFloat(tokenizer.nextToken());// float Zahlen ge"parsed"}}}}
in.close();for(int x =0; x <61; x++){for(int y =0; y <51; y++){System.out.print(matrix[x][y]+" ");}System.out.println("");}}}
Ja, wenn die Größe nicht konstant ist, muss man da statt des Arrays dann eben eine List<List<Float>> verwenden, d.h. da wird sich einiges ändern, aber ... vielleicht reicht das ja als Ansatz...