hamza hamza - 1 month ago 5
Java Question

Why I get this "NullPointerException"?

The task I have to do is to create a class can read and write files. In the read file should be some words lines. Some of them should starts with upper case and some of them not. During the reading process the program should check the words starts with upper case end write only this words in the file I have to write.

But I always get a NullPointerException and I can't catch the reason why! Can anyone help me?

Here my code:

package Filter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

public class Filter {

String eingabeDatei;
String ausgabeDatei;

private String speicher;
private char ersterBuchstabe;
private boolean ersterBuchstabeGroß;


public Filter(String eingabeDatei, String ausgabeDatei) {
this.eingabeDatei = eingabeDatei;
this.ausgabeDatei = ausgabeDatei;
}

public void filter() throws IOException{

FileReader fr = new FileReader(eingabeDatei);
PrintWriter fw = new PrintWriter(ausgabeDatei);

BufferedReader br = new BufferedReader(fr);

do{
speicher = br.readLine();
//ersterBuchstabe = speicher.charAt(0);
ersterBuchstabeGroß = buchstabeGroß(speicher);
if (ersterBuchstabeGroß) {
//TODO Muss die Zeilen die ausgegeben werden mit einem Umbruch ausgeben!
fw.write(speicher);
fw.flush();
}

} while (speicher != null);

br.close();
fr.close();
fw.close();
}

private boolean buchstabeGroß(String speicher) {

ersterBuchstabe = speicher.charAt(0);

if (Character.isUpperCase(ersterBuchstabe)) {
return true;
} else{
return false;
}
}

public static void main(String[] args) {


String eingabeDatei = "C:\\Users\\eibrahi\\Desktop\\eingabeDatei.txt";
String ausgabeDatei = "C:\\Users\\eibrahi\\Desktop\\ausgabeDatei.txt";

Filter fl = new Filter(eingabeDatei, ausgabeDatei);
try {
fl.filter();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("NullPointer");
}

}
}


Exception:

Exception in thread "main" java.lang.NullPointerException
at javaapplication37.Filter.buchstabeGroß(Filter.java:57)
at javaapplication37.Filter.filter(Filter.java:41)
at javaapplication37.Filter.main(Filter.java:73)
Java Result: 1

Answer

Check any object being accessed which is null.