Hallo, Ich bin noch neu in der java-programmeirung und versuche grad ein Programm zu schreiben, was mir bei der arbeit helfen soll. Ein Objekt dieses Programms soll eine Textdatei zeilenweise einlesen, und die ersten beiden Begriffe jeder Zeile (sind in der textdatei durch Tab getrennt) in form eines weiteren Objekts in einer ArrayList aufnehmen.
Ich habe das objekt mit einer testklasse getestet und da hat es funktioniert. Im zusammenhang mit meinem eigentlichen Hauptprogramm funktionierte es nicht mehr. Ich habe eine weitere (im prinzip mit der ersten testklasse identische) testklasse geschrieben und jetzt funktioniert es in der ersten testklasse fehlerfrei, liefert aber in der zweiten eine NullPointerException.
Wie kann das sein? Was kann ich dagegen tun?
hier mein objekt (Es ist von der Klasse ArrayList abgeleitet und nimmt Objekte der von mir selbsterstellten Klasse Blasterg auf)
Hier die Testklasse die funktioniert:
getRead und getContig sind getter-Methoden meine Klasse BlastErg
Hier die Testklasse die eine Exception innerhalb des Objekts erzeugt:
Ich wäre echt dankbar wenn mir jemand helfen könnte, denn ich bräuchte das programm eigentlich schon jetzt und werd fast verrückt bei dem versuch zu verstehen was hier das problem ist
Ich habe das objekt mit einer testklasse getestet und da hat es funktioniert. Im zusammenhang mit meinem eigentlichen Hauptprogramm funktionierte es nicht mehr. Ich habe eine weitere (im prinzip mit der ersten testklasse identische) testklasse geschrieben und jetzt funktioniert es in der ersten testklasse fehlerfrei, liefert aber in der zweiten eine NullPointerException.
Wie kann das sein? Was kann ich dagegen tun?
hier mein objekt (Es ist von der Klasse ArrayList abgeleitet und nimmt Objekte der von mir selbsterstellten Klasse Blasterg auf)
Code:
import java.io.*;
import java.util.*;
public class BlastErgList extends ArrayList<Blasterg> {
[// Dieses arrayList-Objekt erstellt für jede mit blastall geblastete Sequenz EIN Blasterg-Objekt aus dem Alignment
// mit dem jeweils höchsten e-value private static final long serialVersionUID = 1L;
public BlastErgList(String datei){
int n=0;
String guck;
String zeile = null;
BufferedReader ba = null;
try {
ba = new BufferedReader(new FileReader(datei));
zeile = ba.readLine();
String[] zeilentokens =zeile.split("\\t");
if (this.size()==0 && zeile != null){
this.add(new Blasterg(zeilentokens[0], zeilentokens[1]));
//zeilentokens[0] entspricht sequenznamen, zeilentokens[1] entspricht contigname des BLAST-Treffers }
while (zeile != null){
zeile=ba.readLine();
zeilentokens =zeile.split("\\t");
guck=this.get(n).getRead();
if ((guck.equals(zeilentokens[0]))==false){
//prüft ob sequenz bereits enthalten. Nur jeweils erstes Blastergebnis jeder Sequenz wird verwendet,
//weil dass dem besten BLAST-Treffer dieser Sequenz entspricht.
System.out.println(guck + " ist ungleich "+ zeilentokens[0]);
this.add(new Blasterg(zeilentokens[0], zeilentokens[1]));
n++;
}
}
ba.close();
}
catch (Exception ex){
System.out.println("konnte Datei \""+datei+"\"nicht einlesen!");
System.out.println(ex);
}
}
}
Code:
public class BlastErgListtest {
public static void main (String[] args){
System.out.println("Programm Start");
BlastErgList test = new BlastErgList("P:\\workspace\\John\\bin\\blasterg");
int zahl=0;
while (zahl<test.size()){
System.out.print(test.get(zahl).getRead()+" "+test.get(zahl).getContig());
System.out.println("!");
zahl++;
}
System.out.println("Programm Ende");
}
}
Hier die Testklasse die eine Exception innerhalb des Objekts erzeugt:
Code:
public class testblasterglist {
public static void main(String[] args) {
BlastErgList blastlist = new BlastErgList("P:\\workspace\\John\\bin\\blasterg");
System.out.println("groesse blastlist: "+blastlist.size());
}
}
Ich wäre echt dankbar wenn mir jemand helfen könnte, denn ich bräuchte das programm eigentlich schon jetzt und werd fast verrückt bei dem versuch zu verstehen was hier das problem ist