2016-12-21 6 views
-3

Я пытаюсь создать прототип noughts-and-crosses. Раздел кода, с которым я борюсь, - это вход пользователя, а если вход y, он должен изменить гаджет на 0, который перезагружает игру. Однако этого не происходит. Может ли кто-нибудь объяснить, почему?Java: Почему если утверждение никогда не разрешает true?

Scanner s = new Scanner(System.in); 
       System.out.println("Would you like to play again?"); 
       if (s.next().toLowerCase() == "y") { 
        System.out.println("Okay"); 
        g.gamestate = 0; 
       } else { 
        g.gamestate = 4; 
       } 
+0

потому что вы используете '==' вместо равных. SO как сравнивать строки – XtremeBaumer

+0

использовать метод 'equals' не использовать' == 'для сравнения' String' – Mihir

+0

Спасибо, мне больше не говорили об использовании equals вместо ==, я также не знал, что это было называемый «сравнение строк». –

ответ

1

Попробуйте использовать s.next().toLowerCase().equals("y") Оператор «==» сравнивающий ссылки на ваших строковых объектов, а метод «равно» сравнивающие значения.

0

Да, поскольку кто-то прокомментировал решение, необходимо использовать equals() вместо ==.

Scanner s = new Scanner(System.in); 
    System.out.println("Would you like to play again?"); 
    if (s.next().equalsIgnoreCase("y")) { 
     System.out.println("Okay"); 
     //g.gamestate = 0; 
    } else { 
     System.out.println("No"); 
    // g.gamestate = 4; 
    } 
+1

в соответствии с ОП, ему нужен y в нижнем регистре. Так нужна equalsIgnoreCase, нужны только равные – Chinmay

+0

Да, вы правы! –