# Object[][] füllen mit Infos aus Textfile



## McSnoop (12. Januar 2005)

static Object[][] testdata; 
.... 
*public* *void* FillCircuitTable(){ 
*try*{ 
*int* lauftest=0; 
   in = *new* BufferedReader(*new* FileReader("test.txt")); 
*while*((zeile = in.readLine()) != null){ 
      testdata[lauftest][1]=zeile; 
      lauftest++; 
   } 
   in.close(); 
} 
*catch*(Exception e){OutputString(e.toString(),1);} 
} 

Hier bekomme ich NullPointer Exceptions, sicher weil ja testdata oben noch leer ist, aber es soll ja in FillCircuitTable() gefüllt werden. Daten kommen aus einer Textdatei.

Dieses testdata will ich dann einer JTable übergeben zum darstellen.

Bin für jeden Tip dankbar was oben an dem Code falsch ist, bzw wie ich das Problem lösen könnte.

mfg
Snoop


----------



## Snape (12. Januar 2005)

Schau mal dort:
http://www.galileocomputing.de/openbook/javainsel3/javainsel_030004.htm#Xxx998388


----------



## McSnoop (12. Januar 2005)

die exception wird nicht abgefangen weil in OutputString als Parameter nicht null vorhanden sein darf.

Aber wie kommt die null zustande?


----------



## Thomas Darimont (12. Januar 2005)

Hallo!

Ich vermute mal, dass dein static Object[][] testdata; nicht initialisiert wird.
Du must noch explizit sagen testdata = new Object[size0][size1];
wenn die die Dimensionen nicht kennst musst du auf einen dynamischen Datencontainer wie ArrayList oder Vector zurückgreifen.

Gruß Tom


----------



## McSnoop (12. Januar 2005)

ok

aber selbst wenn ich sage:

static Object[][] testdata = new Object[6][1]; 

im file sind 7 zeilen

sprich wenn ich die grenzen angebe bringt er die NullPointerexception

Ich weiß bloss nicht warum.


----------



## Thomas Darimont (12. Januar 2005)

Hallo!

Wenn in der Datei 7 Zeilen sind mußt du die erste Dimension des Array's auch mit 7 initialisieren. Dann laufen die Indizes von 0 bis 6(inklusive)
Wenn du die erste ArrayDimension mit 6 initialisierst hast du auch nur Platz für 6 Elemente also von 0 bis 5 (inklusive).

Außerdem reicht auch ein eindimensionales Array falls du in jedem Array Feld eine Zeile stehen haben willst...

Gruß Tom


----------



## McSnoop (12. Januar 2005)

gut denkfehler meinerseits, dachte wenn ich 6 angebe dann geht er von 0-6.

geändert aber fehler immernoch der gleiche.

was kann denn 0 werden so das eine Exceptionfällig wird

jo ein eindimensionales array würde reichen, ziel ist es das pro zeile mehr drinnen steht und deswegen hab ich einfach mal spalte auf 1 gesetzt


----------



## Thomas Darimont (12. Januar 2005)

Hallo!


```
/*
 * Created on 12.01.2005@17:42:21
 *
 * TODO Explain me...
 */
package de.tutorials;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author Darimont
 *
 * TODO Comment me
 */
public class Test {

    public static void main(String[] args) {

        Object[] oA = new Object[7];

        try {
            BufferedReader br = new BufferedReader(new FileReader(
                    "c:/dateiMitSiebenZeilen.txt"));
            String line;
            int idx = 0;
            while ((line = br.readLine()) != null) {
                oA[idx++] = line;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (int i = 0; i < oA.length; i++) {
            System.out.println(oA[i]);
        }
    }
}
```

Gruß Tom


----------



## McSnoop (12. Januar 2005)

probier ich gleich mal

wo genau ist bei deinem beispiel der unterschied zu meinem?
ausser das ich die exception insgesamt via exception abfange
ich tipp erst mal deines ab. bin leider dazu gezwungen weil mein laptop auf dem ich schriebe nicht ans netz darf. =)


----------



## McSnoop (12. Januar 2005)

hab gefunden :

so vom sinn her sind unsere sachen ja fast identisch mit dem unterschied das ich keinen absoluten Pfad angegeben habe und da lag der Hase begraben.

was mir aber jetzt noch spanisch vorkommt, an anderer Stelle hab ich es genauso gemacht und klappt ohne das ich den Pfad absolute angebe.

der Einzige unterschied ist das da wo es klappt da verwende ich es im Main des ersten Frames und wo es so nicht klappte das main vom 2ten frame. Aber eigentlich sollte es doch wurscht sein oder nicht


----------

