Подтвердить что ты не робот

Сравнение строк - Android

Я не могу сравнить две строки, используя следующий код:

У меня есть строка с именем "gender", которая будет иметь значение "Male" или "Female".

if(gender == "Male")
   salutation ="Mr.";
if(gender == "Female")
   salutation ="Ms.";

Это не сработало, поэтому я попробовал следующее:

String g1="Male";
String g2="Female";
if(gender.equals(g1))
   salutation ="Mr.";
if(gender.equals(g2))
   salutation ="Ms.";

Опять же, это не сработало. Может кто-нибудь, пожалуйста, скажите мне, как сравнивать строковые значения с помощью оператора if.

4b9b3361

Ответ 1

Попробуйте это

if(gender.equals("Male"))
 salutation ="Mr.";
if(gender.equals("Female"))
 salutation ="Ms.";

Также удалите ; (semi-colon) в инструкции if

if(gender.equals(g1));

В Java одна из самых распространенных ошибок, встречающихся новичками, использует == для сравнения строк. Вы должны помнить, == сравнивает ссылки на объекты, а не содержимое.

Ответ 2

Строка в отличие от int или других числовых переменных сравнивается в Java по-другому, чем другие языки.

Для сравнения строк в Java (android) используется метод .compareTo();

поэтому код должен выглядеть следующим образом:

if(gender.compareTo("Male")==0){
   salutation ="Mr.";
}
if(gender.compareTo("Female")==0){
   salutation ="Ms.";
}

Ответ 3

В Java мы не сравниваем строку, как вы делаете выше... Вот сравнение строк...

    if (gender.equalsIgnoreCase("Male")) {
        salutation = "Mr.";
    } else if (gender.equalsIgnoreCase("Female")) {
        salutation = "Ms.";
    }

Ответ 4

Я думаю, что вышеупомянутый ответ правильный. Потому что == для проверки, являются ли две строки одним и тем же объектом, тогда как .equals() проверяет, имеют ли две строки одно и то же значение.

Ответ 5

Оператор == проверяет, являются ли два объекта точно одним и тем же объектом. Две строки могут быть разными объектами, но имеют одинаковое значение (в них одинаковые символы). Используйте метод .equals() для сравнения строк для равенства.

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html

Ответ 6

Ваш gender == "Male" фактически сравнивает ссылки на объекты для объекта gender и другого объекта Male. Вы должны использовать метод .equals() для сравнения значения объектов.

Ответ 7

попробуйте это

String g1="Male";
    String g2="Female";
    if(gender.equals(g1))
       salutation ="Mr.";
    if(gender.equals(g2))
       salutation ="Ms.";

вы закончили свой оператор if if(gender.equals(g1)); < < --- здесь, добавив ";"

Ответ 8

String g1="Male";
String g2="Female";
String salutation="";
String gender="Male";
if(gender.toLowerCase().trim().equals(g1.toLowerCase().trim()));
   salutation ="Mr.";
if(gender.toLowerCase().trim().equals(g2.toLowerCase().trim()));
   salutation ="Ms.";

Ответ 9

попробуйте это.

        String g1 = "Male";
        String g2 = "Female";
        String gender = "Male";
        String salutation = "";
        if (gender.equalsIgnoreCase(g1))

            salutation = "Mr.";
        else if (gender.equalsIgnoreCase(g2))

            salutation = "Ms.";
        System.out.println("Welcome " + salutation);

Вывод:

Welcome Mr.

Ответ 10

Это должно работать:

if(gender.equals("Male")){
 salutation ="Mr.";
}
else if(gender.equals("Female")){
 salutation ="Ms.";
}

Помните, что не следует использовать ; после if.

Ответ 11

if(gender.equals(g1)); <---
if(gender == "Female"); <---

У вас точка с запятой после if.REMOVE IT.

Ответ 12

На самом деле каждый код работает хорошо, но ваша проблема, вероятно, исходит из вашей переменной gender. Вы пытались сделать простой System.out.println(gender); перед comparaison?

Ответ 13

Вы можете использовать функцию contentEquals(). Это может помочь вам.

Ответ 14

Попробуйте:

if (Objects.equals(gender, "Male")) {
    salutation ="Mr.";
} else if (Objects.equals(gender, "Female")) {
    salutation ="Ms.";
}