Werte aus einer Datei auslesen.

Neik05

Grünschnabel
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:

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. :p
 
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:
Code:
...
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.
 
Zuletzt bearbeitet:
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
 
Zurück