JOptionPane.showInputDialog

时间:2016-03-26 07:22:11

标签: java joptionpane

我一直想知道我的代码有什么问题

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

当我运行程序时,它会在'else'块中执行代码,而不是执行'if'块中的操作。谢谢!

5 个答案:

答案 0 :(得分:2)

如果您使用:

s ==“PWD”

java通过“PWD”值定义另一个String,并比较s和新var的引用 你必须使用:

// custom error handler
var errorHandler = function (response) {
    viewModel.isLoading(false);
    toastr.error(response.status + ' ' + response.statusText);                  
};

// not found override for routes that have not been defined
this.notFound = function () {
    toastr.error("404 Not Found");
}

// user route
this.get('/#/users/:id', function (context) {
    amplify.store('state.active-hash', this.path, { expires: config.storeExpiration });
    this.title(config.rootTitle + 'Edit User');
    context.load('/users/' + context.params.id, { error: errorHandler, cache: false }).swap(function () { replaceBindings(viewModel.editUser); });
});

答案 1 :(得分:2)

==测试引用相等性(它们是否是同一个对象) .equals()测试价值平等(它们在逻辑上是否“相等”)。

Objects.equals()在调用.equals()之前检查空值,因此您不必(从JDK7开始,也可以在Guava中使用)。

试试这样 if(s.equals("PWD"))

答案 2 :(得分:1)

你应该使用字符串的equals方法。

_mm_insert_ps

答案 3 :(得分:1)

import javax.swing.JOptionPane;

公共课测试{

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而不是==

答案 4 :(得分:0)

==调用参考相似度

.equals()检查值的相似性,因此最好使用(s.equals("PWD"))