Hallo,
Ich muss innerhalb einer Methode eine Matrix aus einer Datei einlesen. Die Spaltenanzahl ist dabei immer gleich, die Zeilen können sich aber unterscheiden. Zuerst habe ich den SPaß mit einem mehrdimensionalen Array probiert, hat auch wunderbar geklappt, allerdings wär mir die sache dynamisch doch eben lieber.
Dazu verwende ich eine Arraylist, die einen Double array als einträge besitzt.In Main steht also:
die Methode readDataFromFile sieht so aus:
Dabei lese ich jede Zeile in einen String ein, zerlege und trimme diesen String und schreibe die einzelnen EInträge der Zeile in einen Array ein(der erste Eintrag wird bewusst ignoriert). Eigentlich sollte list.add(entry) ja meine Matrix aufbauen, allerdings steht in jeder Zeile das gleiche, nämlich der Eintrag der letzten Zeile der Matrix aus der Datei.
Ich finde einfach den Fehler nicht, vielleicht hat ja jemand eine Idee für mich.
Danke & Gruß
Munay
Ich muss innerhalb einer Methode eine Matrix aus einer Datei einlesen. Die Spaltenanzahl ist dabei immer gleich, die Zeilen können sich aber unterscheiden. Zuerst habe ich den SPaß mit einem mehrdimensionalen Array probiert, hat auch wunderbar geklappt, allerdings wär mir die sache dynamisch doch eben lieber.
Dazu verwende ich eine Arraylist, die einen Double array als einträge besitzt.In Main steht also:
Code:
obj.Mzyldyn=new ArrayList();
//Funktionsaufruf:
obj.readDataFromFile("D:\\RZTheta.dat",obj.Mzyldyn );
die Methode readDataFromFile sieht so aus:
Code:
public void readDataFromFile(String name, List list) throws IOException{
RandomAccessFile file;
String line;
String[] result;
double[] entry=new double[4];
int i =0, col=0 ;
try{
//Datei zum Lesen öffnen
file=new RandomAccessFile(name, "r");
//Zeilenweises abarbeitender Datei:
while ((line = file.readLine()) != null) {
//Daten stehen in den Zeilennummern:
if (i>1 && i<102){
//Aufteilen einer Zeile in ein Array von Strings:
result =line.split("\\s");
col=1;
for (int j=0; j<result.length; j++){
//Überflüssige Leerzeichen abschneiden:
String wort=result[j].trim();
//Leere Strings ignorieren:
if (!wort.equals("") && col!=0){
//Matrix Einträge generieren (Umwandlung in Double):
entry[col]=Double.valueOf(wort).doubleValue();
//Spaltenindex der Matrix erhöhen:
col++;
}
}
// Zeilenindex der Matrix erhöhen:
list.add(entry);
}
i++; //Zählt Zeilenindex
}
file.close();
}catch (IOException e) {
System.out.println("Fehler beim Lesen der Datei");
}
}
Dabei lese ich jede Zeile in einen String ein, zerlege und trimme diesen String und schreibe die einzelnen EInträge der Zeile in einen Array ein(der erste Eintrag wird bewusst ignoriert). Eigentlich sollte list.add(entry) ja meine Matrix aufbauen, allerdings steht in jeder Zeile das gleiche, nämlich der Eintrag der letzten Zeile der Matrix aus der Datei.
Ich finde einfach den Fehler nicht, vielleicht hat ja jemand eine Idee für mich.
Danke & Gruß
Munay