2014-10-01 144 views
0

所以我是新手编程,我一直在尝试做一个简单的程序来练习。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 :("); 
     } 

我缺少什么?

+0

q1始终为空。你从来没有给它分配任何价值。 – 2014-10-01 19:17:43

+0

首先欢迎堆栈溢出放这个'q1 = JOptionPane.showInputDialog(whaterver你想要)'。也可以使用e'quals'来比较字符串而不是'=='。 – 2014-10-01 19:18:43

+0

谢谢!这有效! – EpOcH91 2014-10-01 19:24:43

回答

1

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

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

这是一个初学者的基本编程错误。如果你在字符串中使用==,它会比较字符串的对象引用,而不是它们存储的实际值。想像一下,位于存储器位置1000具有值“应答”和字符串s2位于存储器位置1001具有值“接听”然后

s1 == s2 would compute into 1000 == 1001 

这是当然假字符串S1。你想要做的是比较

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

此计算为每个非基本类型!每个对象都有可以用来比较对象值的方法equals。对于原始类型byte,char,short,int,long,可以继续使用==来比较值。

+0

好的。这有助于我更好地理解它!谢谢! – EpOcH91 2014-10-01 19:25:02