Kann kein Objekt (AudioFile in diesem Beispiel) für ein leeren String erzeugen

mueller91

Neues Mitglied
hallo,
ich wollte fragen, warum er, wenn er ein Leerzeichen als String übergeben kriegt, immer die Fehlermeldung schreibt:
Kann kein AudioFile erzeugen für:
Ich hab schon so ziemlich alles rumprobiert, aber nichts geht.

Das wäre mein Code:

Java:
public class AudioFile {
	private String pathname = "", filename = "", interpret = "",  titel = "" , autor = "", song = "";
	
	public AudioFile(String s){
		parsePathname(s);
		parseFilename(getFilename());
	}
	
	public AudioFile(){}

	public void parsePathname(String s){

		
		if (s.equals("")) {
            pathname = "";
            filename = "";
        }

        if (s.trim().equals("")) {
            pathname = s;
            filename = s;
        } 
        
		if(s.trim().equals("-") || s.trim().equals("")){
			filename = s;
			pathname = s;
		}
		
		if(s.trim() != "" && !s.trim().equals("-")){
			if(s.contains(":") && java.io.File.separatorChar == '/'){
				s = s.replaceAll(":", "");
				pathname = java.io.File.separatorChar + s;
			}
			if(s.contains("\\")){
				s = s.replace('\\', '/');
			}
			s = s.replaceAll("/+", "/");
			s = s.replace('/', java.io.File.separatorChar);
			pathname = s;
			filename = s.substring(s.lastIndexOf(java.io.File.separatorChar)+ 1, s.length());	
		}	
		
		if(((!s.contains("\\") || !s.contains("/")) && !s.contains("-") && s.trim() == "")){
			pathname = "";
			filename = "";
		}
	}
	
	public String getPathname(){return pathname;}
	public String getFilename(){return filename;}
	
	public void parseFilename(String filename){
		
		if(filename.equals(" - ") || filename.equals(".mp3")){
			interpret = "";
			titel = "";
		}
		if((!filename.contains(" - ") || !filename.equals("-") || !(filename.equals("")))){
			interpret = "";
			titel = filename.substring(0, filename.lastIndexOf("."));
		}
		if(filename.equals("-")){
			interpret = "";
			titel = "-";
		}
		
		if(filename.trim().equals("-")){
			interpret = "";
			titel = "";
		}
		
		if (filename.contains(" - ") && filename.contains(".") && !(filename.trim().equals(""))){
			autor = filename.substring(0, filename.lastIndexOf(" - "));
			interpret = autor.trim();
			song = filename.substring(filename.lastIndexOf(" - ")+ 2, filename.lastIndexOf("."));
			titel = song.trim();
		}
		if (filename.length() > 4 && filename.contains(".") && !filename.contains(" - ")){
			interpret = "";
			titel = filename.substring(0, filename.lastIndexOf("."));
		}	
	
	}
	
	public String getAuthor(){return interpret;}
	public String getTitle(){return titel;}

	public String toString(){
		if (getAuthor().trim() == "" && getTitle().trim() == ""){
			return "";
		}
		if (getAuthor() == "") {
			return titel;
		}
		else {
			return getAuthor() + " - " + getTitle();
		}
	}
}

Ich sag schon mal dankeschön im voraus 🙂
 
Hallo,

ist doch klar, Du versuchst einen leerten String zu zerlegen...
aber wo nichts ist, kann man nicht zerlegen.

Wie rufst Du deine Klasse auf?
 
über ne testklasse.
des ist die testklasse:

Java:
import junit.framework.TestCase; 

public class AudioFileTest extends TestCase {

    private static char sep;

    private static String root = "/";

    private static String pathNames[];

    private static String expectedPathNames[];

    private static String expectedFileNames[];

    private static String authors[];

    private static String titles[];

    private static String toStrings[];

    public void setUp() {
        try {
            EmulateOtherOs.reset(); // no emulation
            // EmulateOtherOs.emulateWindows();
            // EmulateOtherOs.emulateLinux();
            // EmulateOtherOs.emulateMac();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sep = java.io.File.separatorChar;
        String osname = System.getProperty("os.name");
        if (osname.toLowerCase().indexOf("win") >= 0)
            root = "C:" + sep;

        pathNames = new String[] {
                root + "home" + sep + "meier" + sep + "Musik" + sep
                        + "Falco - Rock Me Amadeus.mp3",
                root + "home" + sep + "db-admin" + sep
                        + "Frankie Goes To Hollywood - The Power Of Love.ogg",
                root + "tmp" + sep + "Deep Purple - Smoke On The Water.wav",
                root + "my-tmp" + sep + "file.mp3",
                "Falco - Rock Me Amadeus.mp3",
                "file.mp3",
                ".." + sep + "music" + sep + "audiofile.au",
                "   A.U.T.O.R   -   T.I.T.E.L   .EXTENSION",
                "Hans-Georg Sonstwas - Blue-eyed boy-friend.mp3",
                // some more ugly test cases
                "", " ", "//your-tmp/part1//file.mp3/",
                "../your-tmp/..//part1//file.mp3/", "\\file.mp3",
                "\\part1\\\\file.mp3\\", "\\part1\\/file.mp3",
                "/MP3-Archiv/.nox", "/MP3-Archiv/Falco - Rock me Amadeus.",
                "-", " -  " };

        expectedPathNames = new String[] {
                root + "home" + sep + "meier" + sep + "Musik" + sep
                        + "Falco - Rock Me Amadeus.mp3",
                root + "home" + sep + "db-admin" + sep
                        + "Frankie Goes To Hollywood - The Power Of Love.ogg",
                root + "tmp" + sep + "Deep Purple - Smoke On The Water.wav",
                root + "my-tmp" + sep + "file.mp3",
                "Falco - Rock Me Amadeus.mp3",
                "file.mp3",
                ".." + sep + "music" + sep + "audiofile.au",
                "   A.U.T.O.R   -   T.I.T.E.L   .EXTENSION",
                "Hans-Georg Sonstwas - Blue-eyed boy-friend.mp3",
                // some more ugly test cases
                "",
                " ",
                sep + "your-tmp" + sep + "part1" + sep + "file.mp3" + sep,
                ".." + sep + "your-tmp" + sep + ".." + sep + "part1" + sep
                        + "file.mp3" + sep, sep + "file.mp3",
                sep + "part1" + sep + "file.mp3" + sep,
                sep + "part1" + sep + "file.mp3",
                sep + "MP3-Archiv" + sep + ".nox",
                sep + "MP3-Archiv" + sep + "Falco - Rock me Amadeus.", "-",
                " -  " };

        expectedFileNames = new String[] { "Falco - Rock Me Amadeus.mp3",
                "Frankie Goes To Hollywood - The Power Of Love.ogg",
                "Deep Purple - Smoke On The Water.wav", "file.mp3",
                "Falco - Rock Me Amadeus.mp3", "file.mp3", "audiofile.au",
                "   A.U.T.O.R   -   T.I.T.E.L   .EXTENSION",
                "Hans-Georg Sonstwas - Blue-eyed boy-friend.mp3",
                // some more ugly test cases
                "", " ", "", "", "file.mp3", "", "file.mp3", ".nox",
                "Falco - Rock me Amadeus.", "-", " -  " };

        authors = new String[] { "Falco", "Frankie Goes To Hollywood",
                "Deep Purple", "", "Falco", "", "", "A.U.T.O.R",
                "Hans-Georg Sonstwas",
                // some more ugly test cases
                "", "", "", "", "", "", "", "", "Falco", "", "" };

        titles = new String[] { "Rock Me Amadeus", "The Power Of Love",
                "Smoke On The Water", "file", "Rock Me Amadeus", "file",
                "audiofile", "T.I.T.E.L", "Blue-eyed boy-friend",
                // some more ugly test cases
                "", "", "", "", "file", "", "file", "", "Rock me Amadeus", "-",
                "" };

        toStrings = new String[] { "Falco - Rock Me Amadeus",
                "Frankie Goes To Hollywood - The Power Of Love",
                "Deep Purple - Smoke On The Water", "file",
                "Falco - Rock Me Amadeus", "file", "audiofile",
                "A.U.T.O.R - T.I.T.E.L",
                "Hans-Georg Sonstwas - Blue-eyed boy-friend",
                // some more ugly test cases
                "", "", "", "", "file", "", "file", "",
                "Falco - Rock me Amadeus", "-", "" };
    }

    public void tearDown() {
        try {
            EmulateOtherOs.reset();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void testSettersAndGetters() {
        // Use the constructor without arguments
        String current = null;
        try {
            for (int i = 0; i < pathNames.length; i++) {
                String p = pathNames[i];
                current = p;

                AudioFile af = new AudioFile();
                af.parsePathname(p);
                af.parseFilename(af.getFilename());

                assertEquals("getPathname() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", expectedPathNames[i],
                        af.getPathname());
                assertEquals("getFilename() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", expectedFileNames[i],
                        af.getFilename());
                assertEquals("getAuthor() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", authors[i], af.getAuthor());
                assertEquals("getTitle() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", titles[i], af.getTitle());
                assertEquals("toString() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", toStrings[i], af.toString());
            }
        } catch (Exception e) {
            fail("Kann kein AudioFile erzeugen fuer: " + current);
        }
    }

    public void testCtor() {
        // Perform the same getter and setter tests by using the ctor with one
        // argument for construction
        String current = null;
        try {
            for (int i = 0; i < pathNames.length; i++) {
                String p = pathNames[i];
                current = p;

                AudioFile af = new AudioFile(p);
                assertEquals("getPathname() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", expectedPathNames[i],
                        af.getPathname());
                assertEquals("getFilename() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", expectedFileNames[i],
                        af.getFilename());
                assertEquals("getAuthor() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", authors[i], af.getAuthor());
                assertEquals("getTitle() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", titles[i], af.getTitle());
                assertEquals("toString() fuer Testfall [" + i + "]: " + p
                        + " nicht korrekt", toStrings[i], af.toString());
            }
        } catch (Exception e) {
            fail("Kann kein AudioFile erzeugen fuer: " + current);
        }
    }

    // A test case for the treatment of drive letters
    public void test_TreatmentOfDriveLetters_01() {
        AudioFile af = new AudioFile();
        af.parsePathname("Z:\\part1\\\\file.mp3\\");

        char sepchar = java.io.File.separatorChar;

        if (isWindows()) {
            // On Windows we expect "Z:\part1\file.mp3\"
            assertEquals("Pathname stored incorrectly", "Z:" + sepchar
                    + "part1" + sepchar + "file.mp3" + sepchar,
                    af.getPathname());
        } else {
            // On Unix we expect "/Z/part1/file.mp3/"
            assertEquals("Pathname stored incorrectly", sepchar + "Z" + sepchar
                    + "part1" + sepchar + "file.mp3" + sepchar,
                    af.getPathname());
        }
        assertEquals("Returned filename is incorrect", "", af.getFilename());
    }

    // A test case for the treatment of drive letters
    public void test_TreatmentOfDriveLetters_02() {
        AudioFile af = new AudioFile();
        af.parsePathname("Z:part1\\\\file.mp3\\");

        char sepchar = java.io.File.separatorChar;

        if (isWindows()) {
            // On Windows we expect "Z:part1\file.mp3\"
            assertEquals("Pathname stored incorrectly", "Z:" + "part1"
                    + sepchar + "file.mp3" + sepchar, af.getPathname());
        } else {
            // On Unix we expect "/Z/part1/file.mp3/"
            assertEquals("Pathname stored incorrectly", sepchar + "Z" + sepchar
                    + "part1" + sepchar + "file.mp3" + sepchar,
                    af.getPathname());
        }
        assertEquals("Returned filename is incorrect", "", af.getFilename());
    }

    /*--------------------------------------------------------------------------
     * Auxiliary methods 
     */

    private boolean isWindows() {
        return System.getProperty("os.name").toLowerCase().indexOf("win") >= 0;
    }
}

der Test SetterAndGetters ruft die Methode parsePathname auf
 
Hier
Java:
        } catch (Exception e) {
            fail("Kann kein AudioFile erzeugen fuer: " + current);
        }
ist im Exception-Objekt noch die exakte Information enthalten, a) was nicht klappt und b) an welcher Stelle im Code das passiert. Lass dir doch mal die Exception mit
Java:
e.printStackTrace();
ausgeben.
 

Neue Themen


Zurück
Oben