2014-10-01 143 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