2016-03-26 2 views
1

Я задавался вопросом о том, что случилось с моим кодомJOptionPane.showInputDialog

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

при запуске программы, она выполняет код в «еще» блок вместо того, делать то, что в «если блок. Благодаря!

+0

было бы лучше, если бы вы показать, как вы ввод строки в диалоговом окне ввода. Я думаю, что вам не хватает конечных пробелов или маленьких букв при входе и попытке проверить заглавными буквами, если не эта проблема, тогда попробуйте 'if (s.equals (« PWD »)) – Ankanna

ответ

2

== тесты на равенство ссылок (являются ли они тот же объект).
.equals() тесты для равенства значений (независимо от того, являются ли они логически «равными»).

Objects.equals() проверяет наличие нулей перед вызовом .equals(), поэтому вам не нужно (доступно с JDK7, также доступным в Guava).

попробовать, как этот if(s.equals("PWD"))

+0

спасибо, что это сработало и есть хорошее объяснение. – iamLinker

+1

@iamLinker хороший вопрос. продолжайте публиковать полезные вопросы, подобные этому – Ankanna

1

Вы должны использовать метод equals string.

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

Спасибо, сработало! – iamLinker

2

, если вы используете:

сек == «PWD»

Java определяет еще одну строку с помощью «PWD» значение и сравнить ссылки s- и новый вар вы должны использовать:

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

общественного класса Testing {

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); 
} 

}

Попробуйте это я .equalsIgnoreCase вместо ==

+0

спасибо, что это сработало! – iamLinker

0

== вызов ссылочного сходства

и .equals() проверить значение подобия поэтому его лучше использовать (s.equals("PWD"))

+0

, даже лучше использовать «PWD» .equals (s), чтобы избежать NullPointerException, когда s равно null – Joram

Смежные вопросы