Zweidimensionales Array aus Textdatei gewinnen

mars123

Mitglied
Guten Abend Forum,

Ich versuche verzweifelt aus einer Textdatei Werte in ein zweidimensionales Double Array zu bringen am besten als Methode mit Rückgabe Wert "Double[][] irgendwas" für die Weiterverarbeitung mit JFreeChar.

Die Txt Datei ist so aufgebaut:

24.06.2014 103 25.5 56.6 36.1 3.9 29.89
25.06.2014 102.2 25.2 56.8 36 3.8 29.66
26.06.2014 103.2 25.7 56.4 35.9 3.9 29.95
27.06.2014 102.4 25.3 56.7 36.1 3.9 29.72

Meine Idee war:
1. Lese erste Zeile ein
2. splitte durch " "
3. nehme das zweite Element und packe es in ein Array für x
4. nehme das dritte Element und packe es in ein Array für y
5. Lese zweite Zeile ein und wiederhole bis keine Zeile mehr da ist
6. Bzw. gebe als Return Wert das Zweidimensionale Double[][] Array zurück

Aber es kommt bereits jetzt schon zu Fehlern: Die Array werden zwar gefüllt aber dann eine
Exception in thread "main" java.lang.NullPointerException (Zeile 23 wegen den .split)
Weiß aber auch nicht mehr weiter vllt. hat jemand eine Idee.

Danke im Voraus für jede Bemühung.

Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

class Leser
{

	public static void main(String[] args) throws IOException
  {
		List<String> gewicht_Array = new ArrayList<String>();
		List<String> fett_Array = new ArrayList<String>();
		FileReader fr = new FileReader("C:\\Users\\Spielwiese\\daten.txt");
		BufferedReader br = new BufferedReader(fr);

		    String 	 zeile = "";

		    while (zeile != null)
		    {
		      zeile = br.readLine();
		      String[] neu = zeile.split(" ");
		     
		      gewicht_Array.add(neu[1]);
		      fett_Array.add(neu[2]);

		      System.out.println("\n\tLetzte Ausgabe der zwei arrays");
			  System.out.println("für x " + gewicht_Array);
			  System.out.println("für y " + fett_Array);
		      
		    }
		    br.close();
		    System.out.println(gewicht_Array);
		    System.out.println(fett_Array);			
  }
}
 
Hi Danke,

Ja es muss irgendwie damit zusammenhängen hab es mal in das verändert aber es kommt immer noch der gleiche Fehler.

Java:
String 	 zeile = "";

		    do
		    {
		      zeile = br.readLine();
		      String[] neu = zeile.split(" ");
		     
		      gewicht_Array.add(neu[1]);
		      fett_Array.add(neu[2]);

		      System.out.println("\n\tLetzte Ausgabe der zwei arrays");
			  System.out.println("für x " + gewicht_Array);
			  System.out.println("für y " + fett_Array);
		      
		    }while (zeile != null);

Immer noch wirft es die Exception in thread "main" java.lang.NullPointerException.
Was mache ich falsch ?

Gruß
 
Du gehst einfach davon aus, das in neu[] immer mindestens 3 Einträge drin sind. Was ist aber wenn in deiner Datei mal eine Leezeile oder sonwas was kaputt ist? Du solltest erstmal testen ob es überhaupt die Einträge gibt bevor du sie benutzt.

Gruß

Claus
 
Ja danke Claus,

Ich hab grad etwas Tutorials angeschaut und den Code umgeschrieben. Du hast recht ich gehe davon aus, das mindestens drei Einträge existieren.

Der neue Code sieht nun so aus geht bis jetzt. Ich kämpfe jetzt damit rum die zwei List Arrays

List<String> gewicht_Array = new ArrayList<String>();
List<String> fett_Array = new ArrayList<String>();

in ein zweidimensionales Double Array zu bekommen in Form von Double[][] .. das wird schwierig. Und dann noch das ganze als Methode umschreiben.


Java:
package aus_dateien_lesen_beispiele;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Zeilenweise_Lesen_Aus_Datei {

	public static void main(String[] args) {
		
		List<String> gewicht_Array = new ArrayList<String>();
		List<String> fett_Array = new ArrayList<String>();
		
		String zeile = "";
		try
		{
			BufferedReader bfr = new BufferedReader( new FileReader("C:\\Users\\Spielwiese\\gewicht.txt"));
			// Liest Zeilenweise aus Datei 
			while ((zeile = bfr.readLine()) != null)
			{
				String[] neu = zeile.split(" ");
				gewicht_Array.add(neu[1]);
			    fett_Array.add(neu[2]);
				
			    // Ausgabe der Arrays fuer Debug
			    // System.out.println(zeile);
			    
			    
			}
			bfr.close();
			System.out.println("\n\tAusgabe der zwei Arrays");
		    System.out.println("Gewicht array\n" + gewicht_Array);
		    System.out.println("Fett array\n" + fett_Array);
			
		} catch (IOException e) { System.out.println("Fehler: " + e.toString()); }
		

	}

}
 
Ja ich weiß,
Meinst du es wäre besser eine Methode zu schreiben die die Textdatei erstmal durchscannt ob sie in
Ordnung ist ?
Die Textdatei wird automatisch erstellt jeweils mit sieben Werten. Bis jetzt hab ich noch kein Problem damit gehabt, sodass ich die Notwendigkeit nicht genau sehe.
 

Neue Themen


Zurück
Oben