Problem damit, leeren String zurück zu geben

Status
Nicht offen für weitere Antworten.

LaGrotti

Mitglied
Hallo Leute,

als Anfänger habe ich schon das erste Problem:

a)Wenn ein leerer String übergeben wird, soll ein leerer String zurückgegeben werden.
b)Wenn nur Leerzeichen oder Tabs übergeben werden, soll dies unverändert zurückgegeben werden.

zu a)
Ich habe es versucht, so zu machen


public String getFilename(){

if(pathname == "") {
return filename = pathname;
}

warum funktioniert das nicht?

zu b)
wie kann ich das machen?


Wäre echt nett von euch,
Tani
 
Strings müssen mit der Methode equals(String str) geprüft werden.

Java:
String s = "Hallo";
String s2 = "Hallo";

if (s.equals(s2)) {
  System.out.println("Die Strings sind gleich");
} else {
  System.out.println("Die Strings sind ungleich");
}
 
String ist ein Object, und Objecte vergleicht man in Java mit der Methode
Code:
equals

Java:
string1.equals(string2)
 
die Methode muss auch in allen Fällen etwas zurückgeben,
was passiert wenn der String nicht leer ist?
oder folgen noch weitere nicht gepostete Code-Zeilen?
 
kein gutes bsp, denn rate was da raus kommt
Java:
String s = "Hallo";
String s2 = "Hallo";
        
if (s == s2) {
    System.out.println("Die Strings sind gleich");
}
else {
    System.out.println("Die Strings sind ungleich");
}

dennoch richtige Aussage. Objekte sollten wenn es um ihren Inhalt geht immer per equals verglichen werden.

zu 2)
Java:
if (s.trim().equals("")) // dann waren nur whitespacechars drin
 
Hallo Leute, danke für die schnelle Antwort.
Ich mache mal genauere Angaben zu meinem Beispiel:

Java:
public String getFilename(){
		/*Backslash-Geschichte aber funktioniert soweit
		 * if(pathname == ""){}*/
		if(pathname == "") {
			return filename=pathname;
		}
		
		if (pathname.indexOf(java.io.File.separatorChar) == 1) {
			filename = pathname;
		}
		
		else 
			filename = pathname.substring(pathname.lastIndexOf("/")+1, pathname.length());
	
		return filename;
	}
	


 /* Testfile */
    public static void main(String[] args) {

    	AudioFile a = new AudioFile(
                "");
        System.out.println(a.getFilename());




Also, wenn ich unten in der Testfile "" eingebe, ist das ein leerer String.
Oben in getFilename() soll ich dann prüfen, ob dieser String leer ist,
wenn ja, soll ein leerer String zurück gegeben werden.
Und das funktioniert nicht. Mit equals habe ich es schon probiert, aber
ich glaube das Problem liegt in der Rückgabe?!
Ich kenn mich leider nicht gut aus mit Java.

Wie kann ich dann noch sagen:
if(pathname besteht nur aus Leerzeichen oder Tabs)
gib pathname unverändert zurück?
 
> Mit equals habe ich es schon probiert, aber ich glaube das Problem liegt in der Rückgabe?!

falsch geglaubt, je nach Interpretation, beschreibe lieber deinen Code mit equals,
wie sieht der dann aus, was ist die Ausgabe, funktioniert alles?
 
Hallo Slater,

aussehen würde er dann so:

Java:
if(pathname.equals("")){
return filename = pathname;
}

oder?
Trotzdem gibt er mir unten einen Fehler aus
und keinen leeren String.
 
vielleicht ist pathname nicht leer, das kann man untersuchen, z.B. mit System.out.println() die Länge ausgeben,
wie dann zu reagieren ist ist ja auch deine Frage, bygones hat schon was geschrieben

obwohl es nicht zum geposteten Code passt, nur vollständige Programme lassen sich sinnvoll testen,
 
Moin,

if( pathname == "" )
{
return filename = pathname;
}

Ich geh' jetzt mal davon aus, das beides String sind ....
Die Zuweisung beim return macht nun gar keinen Sinn ...


Vermutlich meinst Du sowas, oder ?
Java:
if( pathname.equals("") )
{
    return pathname;
}

Gruß
Klaus
 
Hallo Klaus,

ja sowas meine ich.
Nur würde ich gerne den String "filename" zurückgeben,

nun mache ich

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


/* Testfile */
public static void main(String[] args) {

AudioFile a = new AudioFile(
"/my-tmp//file.mpe");
System.out.println(a.getFilename());


fehler:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
String literal is not properly closed by a double-quote

at AudioFile.getFilename(AudioFile.java:29)
at AudioFile.main(AudioFile.java:112)
 
die Fehlermeldung passt nicht zum Code,
poste doch bitte komplette Testprogramme in Java-Tags
 
Hallo Klaus,

ja sowas meine ich.
Nur würde ich gerne den String "filename" zurückgeben,

nun mache ich

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

Ähm wieso?

Wenn du
Java:
filename = pathname;
return filename;

Schreibst passiert im Grunde nichts anderes als bei
Java:
return pathname;
 
Moin,

Java:
public static void main(String[] args) 
{
    AudioFile a = new AudioFile( "/my-tmp//file.mpe" );  <-- vermutlich auch den ersten Slash escapen !!
    System.out.println(a.getFilename());
}

Gruß
Klaus
 
Hallo Jungs,

ich habe grad das Gefühl,
wir reden aneinander vorbei.
Ich habe in diesem Forum noch einen anderen Thread aufgemacht, wo ich eigentlich
was ganz anderes gefragt hatte (da gings um die Backslashes)
aber da hab ich grad genauer erklärt, worums geht...und jetzt sind wir schon mittendrin -
hier nochmal der Link, warum ich nicht versteh, warum er mir keinen leeren String ausgibt:

http://www.java-forum.org/java-basi...-backslash-einzugeben-version.html#post819072
 
hier geschlossen, muss ja nicht noch mehr parallel besprochen werden, auch wenn das andere Thema noch mit RegEx belastet ist,
aber so ist es eben
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben