2016-03-29 5 views
0

ich diesen Java-Code haben:Wie speichern Sie die Variable außerhalb einer if-Anweisung

String e; 
if(true){ 
e = "ee";  
} 
if(e == "ee"){ 
System.out.println(e); 
} 

Wie kann ich "Verwendung" die Variable e die erste if-Anweisung aus? Ich füge einige dumme Bedingungen hinzu (wenn (wahr) .. etc.), nur um es zu versuchen.

Es tut mir Leid für mein schlechtes Englisch: v

+0

Vergleicht Strings verwenden wird mit der '== 'Operator tut nicht, was Sie denken, dass es tut. Verwenden Sie stattdessen "ee" .equals (e) '. – JonK

+2

Mögliches Duplikat von [Wie kann ich Zeichenfolgen in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – JonK

+0

Können Sie klären, was Ihr Problem ist und ob Sie einen Fehler bekommen und was ist das? –

Antwort

1

Sie es gespeichert haben, sind Sie nur es falsch zu vergleichen. Verwenden Sie die Methode equals, um Werte zu vergleichen. Die == operator vergleicht Referenzgleichheit.

+0

Das 'equals' und' == 'müssen in diesem Fall dasselbe tun. –

+1

In diesem Fall, ja, aber mit Bedingung wie 'wenn (wahr)' bezweifle ich, dass dies der eigentliche Code ist, den er ausführt, aber nur eine kurze Darstellung dessen, was er tut. – Stultuske

+0

Guter Punkt. IMHO Es ist nicht klar, worum es bei dem OP geht. –

1

Um die Variable mit einer anderen Zeichenfolge zu vergleichen, verwenden Sie equals und nicht ==. Siehe How do I compare strings in Java?

String e; 

if(true){ 
    e = "ee";  
} 

if(e.equals("ee")){ 
    System.out.println(e); 
} 
+0

Dies wird in diesem Fall das Gleiche tun. –

+1

"ee" .equals (e) (wie JonK in den Kommentaren vorgeschlagen hat) ist sicherer. Sobald die Bedingung nicht mehr erfüllt ist (wahr) oder sobald ein Mutationstest für diesen Code durchgeführt wird, wird eine NullPointerException nach der anderen ausgelöst. – Stultuske

+0

@Stultuske es ist sicherer, aber ist es eine Antwort auf das Problem oder mehr von einem Kommentar? –

0

Das Problem wahrscheinlich, dass der Compiler nicht wissen Ihre Variable nicht sein soll festgelegt werden muss. Es gibt eine Reihe von Möglichkeiten, dies zu lösen.

Geben Sie einen Standard.

String e = null; 

oder deutlich machen, dass der alternative Zweig ist unmöglich

if (condition) { 
    e = "ee";  
} else { 
    throw new AssertionError(); 
} 

oder einen anderen Wert geben.

if (condition) { 
    e = "ee";  
} else { 
    e = "that was unexpected"; 
} 
0

Sie verwenden können:

String e; 

if(true){ 
    e = "ee";  
} 

if("ee".equals(e)){ 
    System.out.println(e); 
} 

Da Wenn e null sein wird, dann werden Sie nicht Nullpointer erhalten, wenn Sie wie oben

if("ee".equals(e)){ //Some operation } 
Verwandte Themen