2012-03-27 186 views
3
import java.util.Scanner; 

public class Questionaire { 

    public static void main(String[] args) { 

    String name; 
    String ansOne; 
    Scanner input = new Scanner(System.in); 

    System.out.print("Hello, welcome to the super awesome quiz. Let's get things going. What is your name?"); 
    name = input.nextLine(); 
    System.out.print("Okay, hi " + name + " I'm just going to call you Bob."); 
    System.out.print(" Question 1: What is the name of your dog?"); 
    ansOne = input.nextLine(); 

    if (ansOne == "Avagantamos") { 
     System.out.print("Correct!"); 
    } else { 
     System.out.print("Wrong! The correct answer was Avagantamos!"); 
    } 

    } 
} 

所以基本上,當它要求你輸入你的狗的名字時,即使你輸入Avagantamos也是不正確的。我仍然非常喜歡,這真是令人沮喪,所以非常感謝任何迴應的人。跳過如果語句

+0

歡迎來到SO。 +1提供所有必要的細節以供某人回答您的問題(您會驚訝多久不是這種情況)。輸入代碼時,請嘗試正確格式化,並縮進整個塊4個空格,以便SO將使用固定寬度的字體顯示它。在輸入頁面上有一個按鈕「{}」,它將縮進所選的4個空格。安德魯爲你做了這件事。 – 2012-03-27 01:10:48

回答

9

請勿使用==來比較字符串。使用equals(...)equalsIgnoreCase(...)方法。

明白==檢查兩個對象是相同的這是不是你所感興趣的問題。在另一方面檢查的方法,如果兩個字符串都以相同的順序相同的字符,這就是這裏很重要。因此,而不是

if (fu == "bar") { 
    // do something 
} 

做,

if (fu.equals("bar")) { 
    // do something 
} 

,或者

if (fu.equalsIgnoreCase("bar")) { 
    // do something 
} 
+0

謝謝!它現在有效。在這個論壇上的迴應是閃電般的。 – 2012-03-27 01:14:45

+1

@JakubZieba:不客氣。我們看到這個問題很多,所以如果因爲這個原因而關閉並刪除,請不要感到驚訝。 – 2012-03-27 01:16:42

2

使用String.compareTo()(或String.equals()),而不是==

2

比較字符串時,使用.equals(),不==。這是因爲==根據參考身份比較對象,並且可能有多個包含相同數據的實例。 .equals()方法將比較String的內容,這正是您想要的內容。所以,你應該寫

if (ansOne.equals("Avagantamos")) { 

在這種情況下,似乎input.nextLine()正在建設一個新的String對象,這就是爲什麼==不起作用。

順便提一句,你可能想用System.out.println而不是.print;否則提示和輸出將全部在一行上一起運行。

1

使用ansOne.equals("Avagantamos")

==比較對象的引用。