2013-02-27 5 views
0

Итак, моя проблема заключается в том, что я пытаюсь сделать очень простую программу, чтобы обновить мои ужасные навыки кодирования, но я столкнулся с проблемой, которую я не понимаю. Предполагается, что программа ответит «Да» и напечатает «yay», чтобы проверить, работает ли она, но она не работает. Поэтому мне интересно, что я делаю неправильно.Сканер nextLine(), похоже, не меняет строку

public class main { 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     int playerTroops, computerTroops; 
     String teamName, computerName = "Orcs", answer; 
     Scanner listener = new Scanner(System.in); 
     System.out 
       .println("Welcome to the Battle Grounds, where you are responsible for winning a war \nAre you ready? \nYes or No"); 
     answer = listener.nextLine(); 

     if (answer == "Yes") 
      System.out.println("Yayy"); 
     else 
      System.out.println("Why"); 
    } 
} 

ответ

4

Для сравнения Java Строка, вы должны использовать оператор .equals:

if(answer.equals("Yes")) 

Если вы хотите игнорировать случай,

if(answer.equalsIgnoreCase("Yes")) 

В Java оператор == проверяет для справки равенство. При нормальных обстоятельствах равно строки не имеют одинаковой ссылки (I.E: Это разные объекты. Это различие чрезвычайно важно в Java).

+0

oh спасибо, что сработало – user2113591

+0

@ user2113591 Добро пожаловать на SO. Не забудьте [принять] (http://meta.stackexchange.com/a/5235/186652) ответ, если он решает вашу проблему (после истечения срока действия). – Pshemo