所以我是编程的新手,我一直在尝试制作一个简单的练习程序。
它会问你问题,你会回答它。
我似乎无法让它正常工作。它或者说它是正确的,当它不是或它是不正确的时候。
这是我的代码
// 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 :(得分: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,您可以继续使用==来比较值。