StringTokenizer

Status
Nicht offen für weitere Antworten.

siebeck

Mitglied
Hallo,

habe folgendes Programm geschrieben:

public class FlowLayoutTest {
public static void main(String argv[]){
try {
Frame f=new Frame();
f.setSize(300,300);
f.setTitle("Honi Soit Mal Y Penne");
//WindowClosing/WindowIconifield
f.addWindowListener(new FensterBeobachter());


//FileReader erzeugen, Datei lesen
FileReader fr=new FileReader("Test.txt");
BufferedReader br=new BufferedReader(fr);

//erste Zeile lesen
String sline=br.readLine();

//Solange einlesen und am Bildschirm ausgeben, bis Ende erreicht ist
while(sline!=null) {
System.out.println(sline);
sline=br.readLine();
}

String text=sline;
//Datei schließen
System.out.println(text+"schließen");
br.close();

StringTokenizer st=new StringTokenizer(sline,"\t\n\r");
Panel p=new Panel(new FlowLayout(FlowLayout.LEFT));

while(st.hasMoreTokens()){
String token=st.nextToken();
p.add(new Label(token));
}
f.add(p);
f.setVisible(true);
}
catch(IOException e) {System.out.println(e);}

}
}

Eskommt folgende Fehlermeldung in der Zeile: StringTokenizer st=new StringTokenizer(sline,"\t\n\r");:
Exception in thread "main" java.lang.NullPointerException
at java.util.StringTokenizer.<init>(Unknown Source)
at java.util.StringTokenizer.<init>(Unknown Source)
at FlowLayoutTest.main(FlowLayoutTest.java:35)

Woran liegt es?
 

thE_29

Top Contributor
Weil sline = null!

Es wird ja null, wenn die while Schleife abbricht!

das ist der Fehler!
 

siebeck

Mitglied
Ok, danke, verstanden.

Nun habe ich ein ähnliches Programm so umgebaut:

public class DatenFrame extends Frame{
String textfile;
String test;
String datei;
DatenFrame(){

//Layout
this.setLayout( new GridLayout(3,9) );
this.setSize(750,200);

try {
FileReader fr=new FileReader("Daten.txt");
BufferedReader br=new BufferedReader(fr);
String sline=br.readLine();
br.close();
StringTokenizer st=new StringTokenizer(sline,"\t\n\r");
System.out.println(sline);

while(st.hasMoreTokens()){
String token=st.nextToken();
if (token.equals(",")) {
this.add(new Label(token));
}
}
this.setVisible(true);

}
catch(IOException e) {System.out.println(e);}


ich möchte, wenn in der Textdatei: "01.01.07,05.01.07" mittels if (token.equals(",")) das "," zwischen den Datums erkannt wird und damit ein Label: 01.01.07 und ein zweites Label: 05.01.07 erkannt wird.

Hat bisher bei mir nicht funktioniert.

Danke für die Antworten bereits im voraus.
 

thE_29

Top Contributor
StringTokenizer st=new StringTokenizer(sline,"\t\n\r");

Du splittest ja auch nicht nach "," sondern nach Tab und Enter!

Du musst beim Konstruktor schon hinten ","); sagen

if (token.equals(",")) {
this.add(new Label(token));
}
}

Und was soll der Käse??

Du hängst sowieso nur was rauf, wenn es ein "," ist!

Weißt du überhaupt wie der StringTokenizer funktioniert, bzw verstehst du die API oder was du überhaupt tust?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A StringTokenizer mit Leerzeichen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben