2016-03-26 3 views
1

Ich habe über fragen, was mit meinem Code falsch istJOptionPane.showInputDialog

String s = JOptionPane.showInputDialog(null,"Enter discount type"); 
       if(s == "PWD"){ 
        dis = 0.25; 
       } 
       else{ 
        dis = 0; 
        JOptionPane.showMessageDialog(null, s); 
       } 

, wenn ich mein Programm ausführen, führt es den Code in dem ‚else‘ Block anstatt das zu tun, was in dem ‚wenn ist ' Block. Vielen Dank!

+0

es wäre besser, wenn Sie zeigen, wie Sie die Zeichenfolge eingeben im Eingabedialog. Ich denke, dass Sie die abschließenden Leerzeichen oder die kleinen Buchstaben beim Eingeben vermissen und versuchen, mit Großbuchstaben zu überprüfen, wenn nicht dieses Problem dann versuchen Sie 'if (s.equals (" PWD "))' – Ankanna

Antwort

2

== Tests als Referenz Gleichheit (ob sie das gleiche Objekt sind).
.equals() Tests für Wert Gleichheit (ob sie logisch "gleich" sind).

Objects.equals() sucht nach Nullen vor dem Aufruf .equals() so müssen Sie nicht (verfügbar ab JDK7, auch in Guava verfügbar).

versuchen, wie diese if(s.equals("PWD"))

+0

danke, es hat funktioniert und habe auch eine gute Erklärung. – iamLinker

+1

@iamLinker gute Frage. Schreiben Sie die nützlichen Fragen wie diese – Ankanna

1

Sie sollten die equals-Methode von string verwenden.

`s.equals("PWD")` instead of `s == "PWD"` or `equalsIgnoreCase(...)` for case insensitive comparison. 
+0

Danke, dass es arbeitete! – iamLinker

2

wenn Sie verwenden:

s == "PWD"

java andere String von "PWD" Wert definiert und die Referenzen s vergleichen und den neuen var Sie verwenden müssen:

s.equals("PWD") 
1
import javax.swing.JOptionPane; 

public class Test {

public static void main(String[] args) { 
    double dis = 0; 
    // TODO Auto-generated method stub 
    String s = JOptionPane.showInputDialog(null,"Enter discount type"); 
    if(s.equalsIgnoreCase("PWD")){ 
     dis = 0.25; 
    } 
    else{ 
     dis = 0; 
     JOptionPane.showMessageDialog(null, s); 
    } 
    System.out.println(dis); 
} 

}

dieses Versuchen verwendete ich .equalsIgnoreCase statt ==

+0

danke es hat funktioniert! – iamLinker

0

== eine Referenz Ähnlichkeit

und .equals() Prüfung Ähnlichkeit der Wert Aufruf so ist es besser, ein (s.equals("PWD"))

zu verwenden
+0

noch besser, "PWD" .equals (s) zu verwenden, um NullPointerException zu vermeiden, wenn s null ist – Joram

Verwandte Themen