Hallo,
ich will innerhalb einer Methode einen Datensatz aus einer Datei auslesen. Diese Datei besteht aus 2 Kopfzeilen. Danach folgen 100 Zeilen mit jeweils 5 Spalten, welche eingelesen werden sollen. Die Daten sind durch Leerzeichen getrennt und bestehen aus double werten. Es kann sein, dass die Anzahl dieser Leerzeichen variiert. Genau da liegt auch mein Problem: Füge ich in meinen Datensatz an beliebiger Stelle eine Spalte mit Leerzeichen ein, ist meine ArrayList auf einemal doppelt so lang un dich kanns mir nicht erklären. Aber hier erstmal der code:
Wie man sieht lese ich jede Zeile ein, Splitte sie durch Leerzeichen und trimme die Felder des Arrays, so dass nur noch der double Wert drin steht. anschließend schreibe ich die werte in den array entry und füge jede zeile der ArrayList Matrix zu.
Wie schon gesagt, füge ich zwischen spalte 1 und 2 einfach eine Leere Spalte ein, enthält meine "matrix" alle Werte doppelt, also 1-100 und dann nochma das gleich in zeile 101-200.
hoffe das ganze ist verständlich formuliert. bin für jede hilfe dankbar!
gruß munay
ich will innerhalb einer Methode einen Datensatz aus einer Datei auslesen. Diese Datei besteht aus 2 Kopfzeilen. Danach folgen 100 Zeilen mit jeweils 5 Spalten, welche eingelesen werden sollen. Die Daten sind durch Leerzeichen getrennt und bestehen aus double werten. Es kann sein, dass die Anzahl dieser Leerzeichen variiert. Genau da liegt auch mein Problem: Füge ich in meinen Datensatz an beliebiger Stelle eine Spalte mit Leerzeichen ein, ist meine ArrayList auf einemal doppelt so lang un dich kanns mir nicht erklären. Aber hier erstmal der code:
Code:
private void readDataFromFile() throws IOException {
RandomAccessFile file;
String line;
String[] result;
double[] entry;
int i =0, col=0 ;
// Datei zum Lesen öffnen:
file=new RandomAccessFile(datname, "r");
//Zeilenweises abarbeitender Datei:
while ((line = file.readLine()) != null) {
// entry soll Daten einer Zeile enthalten:
entry=new double[4];
// Einlesen der 2 Kopfzeilen:
if (i<=1){
header[i]=line;
}
//Daten stehen in den Zeilennummern:
if (i>1 && i<102){
//Aufteilen einer Zeile in ein Array von Strings:
result =line.split("\\s");
col=0;
for (int j=0; j<result.length; j++){
//Überflüssige Leerzeichen abschneiden:
String wort=result[j].trim();
//Leere Strings ignorieren:
if (!wort.equals("") ){
//Erste Spalte (indizes) wird ignoriert:
if (col!=0){
//Einträge einer Zeile generieren
// (Umwandlung in Double):
entry[col-1]=Double.valueOf(wort).doubleVaue();
}
//Spaltenindex der Matrix erhöhen:
col++;
}
}
// Zeile dem dynamischen Feld hinzufügen:
matrix.add(entry);
}
// Zeilenindex erhöhen:
i++;
file.close();
}
Wie man sieht lese ich jede Zeile ein, Splitte sie durch Leerzeichen und trimme die Felder des Arrays, so dass nur noch der double Wert drin steht. anschließend schreibe ich die werte in den array entry und füge jede zeile der ArrayList Matrix zu.
Wie schon gesagt, füge ich zwischen spalte 1 und 2 einfach eine Leere Spalte ein, enthält meine "matrix" alle Werte doppelt, also 1-100 und dann nochma das gleich in zeile 101-200.
hoffe das ganze ist verständlich formuliert. bin für jede hilfe dankbar!
gruß munay