Hey Community
Meine Aufgabe war es, ein Dateiname nach Verzeichnis, Extension etc. aufzuspalten.
Dafür hab ich zwei Klassen geschreiben. Eine, die die ganze Arbeit ausführen soll und eine, die die erste testen soll.
Tester-Klasse:
"Arbeiter"-Klasse
Beim ausführen in der Konsole krieg ich ne NullPointerException:
at Parser.positions(Parser.java:29)
at Parser.(init)(Parser.java:9)
at TestParser.main(TestParser.java:13)
Wenn ich das richtig verstehe, hat die "Arbeiter"-Klasse Schwierigkeiten, den String Pfad richtig zu lesen. Dies, obwohl der String doch über den Konstruktor definiert wurde, also frei zur Verfügung stehen solle?
Wenns wirklich daran liegt, dass die anderen Methoden den String Pfad nur durch Zeile 3 kennen, wie krieg ich die Infos aus dem Konstruktor raus? Sollte mMn eigentlich automatisch geschehen, doch wo liegt dann der Fehler?
Bin momentan komplett verwirrt
Ich habe ebenfalls versucht, die Methode positions(String s) zu definieren und dann einfach als positions(Pfad) aufzurufen, doch das funktionierte ebenfalls nicht. Irgendetwas stimmt mit dieser Methode nicht ???:L
btw: ich weiss, dass ich mir den Umweg über das int-Array mit der String Methode "lastIndexOf" sparen könnte, doch darum gehts wohl nicht, oder?
thx und lg
lajao
Meine Aufgabe war es, ein Dateiname nach Verzeichnis, Extension etc. aufzuspalten.
Dafür hab ich zwei Klassen geschreiben. Eine, die die ganze Arbeit ausführen soll und eine, die die erste testen soll.
Tester-Klasse:
Java:
import java.util.Scanner;
public class TestParser{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Dateipfad eingeben: ");
String s = scanner.nextLine();
System.out.println(s);
Parser parser = new Parser(s);
parser.print();
}
}
"Arbeiter"-Klasse
Java:
public class Parser{
public String Pfad;
public Parser(String s){
Pfad = s;
}
int[] pos = positions();
private String Extension(){
String ext = Pfad.substring(pos[1]+1,Pfad.length()-1);
return ext;
}
private String Dateiname(){
String dat = Pfad.substring(pos[0]+1,pos[1]-1);
return dat;
}
private String Verzeichnis(){
String ver = Pfad.substring(0,pos[0]-1);
return ver;
}
private int[] positions(){
int[] ret = new int[2];
int i = Pfad.length();
while(i > 0){
if(Pfad.charAt(i) == '.') ret[1]=i;
if(Pfad.charAt(i) == '\\'){
ret[0]=i;
i = 0;
}
}
return ret;
}
public void print(){
System.out.println("Dateipfad: " + Pfad);
System.out.println("Extension: " + Extension());
System.out.println("Dateiname: " + Dateiname());
System.out.println("Verzeichnis: " + Verzeichnis());
}
}
Beim ausführen in der Konsole krieg ich ne NullPointerException:
at Parser.positions(Parser.java:29)
at Parser.(init)(Parser.java:9)
at TestParser.main(TestParser.java:13)
Wenn ich das richtig verstehe, hat die "Arbeiter"-Klasse Schwierigkeiten, den String Pfad richtig zu lesen. Dies, obwohl der String doch über den Konstruktor definiert wurde, also frei zur Verfügung stehen solle?
Wenns wirklich daran liegt, dass die anderen Methoden den String Pfad nur durch Zeile 3 kennen, wie krieg ich die Infos aus dem Konstruktor raus? Sollte mMn eigentlich automatisch geschehen, doch wo liegt dann der Fehler?
Bin momentan komplett verwirrt
Ich habe ebenfalls versucht, die Methode positions(String s) zu definieren und dann einfach als positions(Pfad) aufzurufen, doch das funktionierte ebenfalls nicht. Irgendetwas stimmt mit dieser Methode nicht ???:L
btw: ich weiss, dass ich mir den Umweg über das int-Array mit der String Methode "lastIndexOf" sparen könnte, doch darum gehts wohl nicht, oder?
thx und lg
lajao
Zuletzt bearbeitet von einem Moderator: