跳过If语句

时间:2012-03-27 01:07:14

标签: java string

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。我仍然是真正的菜鸟,这真的令人沮丧,所以非常感谢你的回应。

4 个答案:

答案 0 :(得分:9)

不要使用==来比较字符串。使用equals(...)equalsIgnoreCase(...)方法。

了解==检查两个对象是否相同而不是您感兴趣的内容。另一方面,这些方法检查两个字符串是否具有相同的字符按照相同的顺序,这就是重要的事情。而不是

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

做,

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

,或者

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

答案 1 :(得分:2)

使用String.compareTo()(或String.equals())代替==

答案 2 :(得分:2)

比较字符串时,请使用.equals(),而不是==。这是因为==根据引用标识比较对象,并且可能有多个String实例包含相同的数据。 .equals()方法将比较String s的内容,这是您想要的。所以你应该写

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

在这种情况下,似乎input.nextLine()正在构建一个新的String对象,这就是==不起作用的原因。

顺便提一下,您可能希望使用System.out.println而不是.print;否则提示和输出将一起在一行上运行。

答案 3 :(得分:1)

使用ansOne.equals("Avagantamos")

==比较对象的引用。