# Werte aus einer Datei auslesen.



## Neik05 (23. November 2005)

Hi, ich ( noch ein Anfänger  ) habe ein Problem mit dem auslesen verschiedener Werte aus einer Datei. Hier die Darstellung der Textdatei.

1,2,3
4,5,6
7,8,9

Meine Aufgabe besteht nun darin, die eingelesenen Werte in einen Array abzuspeichern, wie beispielsweise in diesen hier:

int[] ausgeleseneWerte = new int[30];

Aber das Problem ist, dass ich auch die "," - Zeichen mitbekomme. Hier mal mein Code:


```
import java.io.*;

public class DateiLesen2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	    LineNumberReader f;
	    String line;
	    int positionX = 0;
	    
	    int[] ausgeleseneWerte = new int[30];
	    
	    try {
	      f = new LineNumberReader(
	          new FileReader("tabelle.txt"));
	      while ((line = f.readLine()) != null ) {
	        
                if( line.charAt(positionX) == ',' ) {
	        	positionX++;
	        } 
	    	  
	    	System.out.print(f.getLineNumber() + ": ");
	        System.out.println(line);
	      }
	      f.close();
	    } catch (IOException e) {
	      System.out.println("Fehler beim Lesen der Datei");
	    }
	}
}
```

In dem unterstrichenen Bereich versuche ich dann, einen Stelle weiterzurücken, damit er das Komma nicht mit einliest, aber ohne Erfolg.

Im Internet konnte ich zu solchen spezifischen Auslesungen aus einer Datei nichts finden und würde mich darüber freuen, wenn mir jemand behilflich sein kann.


----------



## matdacat (23. November 2005)

Im String line steht jeweils eine komplette Zeile aus der Datei. Mittels split kannst du diesen String anhand eines Trennzeichens trennen, die Ergebnisse werden in einem Array zurückgeliefert.

Ungetestet:

```
...
int anzahlWerte = 0;

while ((line = f.readLine()) != null ) {
  String[] temp = line.split(",");
  for (int i = 0; i < temp.length; i++)
    ausgeleseneWerte[anzahlWerte++] = Integer.parseInt(temp[i]);
}
...
```

Ps. Wenn du die maximale Anzahl der einzulesenden Werte nicht kennst, ist eine dynamische Datenstruktur wie z.B. ein Vektor die geeignetere Variante gegenüber einem fixen Array. Solltens nämlich mehr als 30 Werte werden, verabschiedet sich das Programm momentan.


----------



## Neik05 (23. November 2005)

Spitze, es funktioniert.  Außerdem danke für den Tipp mit dem Vektor.  Die kannte ich nämlich noch nicht.


----------



## elmato (23. November 2005)

Die Logik deines Programms, stimmt noch nicht ganz,
line = f.readLine() liefert dir z.B. 1,2,3 zurück,
dann testes du ob am index 0 ein char mit dem Wert ' ist, was natürlich nicht der fall ist, dann läuft dein Programm zur nächsten Zeile da du nichts weiter mit dem String machst und so weiter...
Du musst "irgendwie" deinen String zerlegen, da du ja die einzelnen Werte haben möchtest, hier hast du nun etliche möglichkleiten, je nachdem wie fit du schon bist, schau dir mal die Methoden split, substring an, du kannst auch mit deinem chatAt arbeiten, die Logik wäre dann:
für die länge des Strings überprüfe jeden char, wenn er nicht ' ist füge ihn dem Array hinzu, sonst gehe zur nächsten Position.
Alternativ kannst du dir auch mal die Klasse StringTokenizer ansehen 
so das sollte reichen um deine Aufgabe lösen zu können, versuch's mal wenn's nicht klappt wieder melden 
mfg elmato

//edit, ok zu spät post ignorieren


----------

