2012-03-27 195 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")

==比较对象的引用。