JOptionPane - 正确/错误的答案

时间:2014-10-01 19:15:27

标签: java joptionpane

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

它会问你问题,你会回答它。

我似乎无法让它正常工作。它或者说它是正确的,当它不是或它是不正确的时候。

这是我的代码

// 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 :(");
        }

我错过了什么?

1 个答案:

答案 0 :(得分:1)

首先为q1分配一个值,否则你将比较空值。

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

对于初学者来说,这是一个基本的编程错误。如果对字符串使用==,它将比较字符串的对象引用,而不是它们存储的实际值。想象一下字符串s1,它位于内存位置1000,值为"答案"并且字符串s2位于存储器位置1001中,值为"答案"那么

s1 == s2 would compute into 1000 == 1001

当然是假的。你想要做的是比较

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

这适用于每种非原始类型!每个对象都有等于你可以用来比较对象值的方法。对于基本类型byte,char,short,int,long,您可以继续使用==来比较值。