Java JOptionPane-正确/不正确答案

Java JOptionPane-正确/不正确答案,java,joptionpane,Java,Joptionpane,所以我是编程新手,我一直在尝试做一个简单的程序来练习 它问你问题,你回答 我似乎无法让它正常工作。它不是说它是正确的,就是说它是不正确的 这是我的密码 // Questions String q1; JOptionPane.showInputDialog(null, "1). What is the name of our sun?"); if(q1 == "Sol") { JOptionPane.showMessageDialog(null, "Co

所以我是编程新手,我一直在尝试做一个简单的程序来练习

它问你问题,你回答

我似乎无法让它正常工作。它不是说它是正确的,就是说它是不正确的

这是我的密码

// Questions

    String q1;
    JOptionPane.showInputDialog(null, "1). What is the name of our sun?");

    if(q1 == "Sol") {
        JOptionPane.showMessageDialog(null, "Correct!");
    }
    else {
        JOptionPane.showInputDialog(null, "Sorry that is incorrect :(");
        }

我缺少什么?

首先为q1赋值,否则将比较空值

其次,不能使用相等运算符==进行字符串比较。您需要使用字符串的equals方法。因此,q1等于(“Sol”)

对于初学者来说,这是一个基本的编程错误。如果将==与字符串一起使用,它将比较字符串的对象引用,而不是它们存储的实际值。假设一个字符串s1位于内存位置1000中,其值为“Answer”,字符串s2位于内存位置1001中,其值为“Answer”

这当然是错误的。你要做的是比较

"Answer" == "Answer". For that you need to use s1.equals(s2)

这对每种非基本类型都很重要!每个对象都有相等的方法,可以使用该方法比较对象的值。对于基本类型byte、char、short、int、long,您可以继续使用==来比较值。

q1始终为空。您从不给它赋值。首先,欢迎使用堆栈溢出将此
q1=JOptionPane.showInputDialog(无论您想要什么)
。也可以使用e
quals
来比较字符串而不是
=
。谢谢!这就成功了!啊好的。这有助于我更好地理解它!谢谢
"Answer" == "Answer". For that you need to use s1.equals(s2)