Пропуск заявления If - PullRequest
3 голосов
/ 27 марта 2012
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 ]

9 голосов
/ 27 марта 2012

Не используйте == для сравнения строк. Используйте метод equals(...) или equalsIgnoreCase(...).

Поймите, что == проверяет, совпадают ли два объекта , что не является тем, что вас интересует. С другой стороны, методы проверяют, имеют ли две строки одинаковые символы в одинаковых порядок, и вот что здесь важно. Так что вместо

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

до,

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

или

if (fu.equalsIgnoreCase("bar")) {
  // do something
}
2 голосов
/ 27 марта 2012

При сравнении строк используйте .equals(), а не ==.Это связано с тем, что == сравнивает объекты в соответствии с идентификатором ссылки, и может быть несколько экземпляров String, которые содержат одинаковые данные.Метод .equals() будет сравнивать содержимое String, что вам и нужно.Поэтому вы должны написать

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

. В этом случае кажется, что input.nextLine() создает новый объект String, поэтому == не работает.

Кстативы, вероятно, хотели использовать System.out.println вместо .print;в противном случае запросы и вывод будут выполняться вместе в одной строке.

2 голосов
/ 27 марта 2012

Используйте String.compareTo() (или String.equals()) вместо ==

1 голос
/ 27 марта 2012

Использование ansOne.equals("Avagantamos")

== сравнивает ссылки объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...