Сравнение строк - 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.
Ответы
Ответ 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.";
}