Comparación de cadenas – Android

No puedo comparar dos cadenas usando el siguiente código:

Tengo una cadena llamada “género” que tendrá como valor “masculino” o “femenino”.

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

Esto no funcionó, así que intenté lo siguiente:

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

Nuevamente, no funcionó. ¿Puede alguien decirme cómo comparar valores de cadena utilizando la instrucción if?

Prueba esto

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

Eliminar también ; (punto y coma) en su statement if

 if(gender.equals(g1)); 

En Java, uno de los errores más comunes que conocen los recién llegados es usar == para comparar cadenas. Tienes que recordar que == compara las referencias de objeto, no el contenido.

Cadena a diferencia de int u otras variables numéricas se comparan en Java de forma diferente a otros idiomas.

Para comparar cadenas en Java (android) se usa el método .compareTo ();

entonces el código debería ser así:

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

En Java no comparamos la cadena como lo está haciendo arriba … Aquí está la comparación de cadenas …

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

Creo que la respuesta antes mencionada es correcta. Porque == es para probar si dos cadenas son el mismo objeto, mientras que .equals () prueba si dos cadenas tienen el mismo valor.

El operador == verifica si dos objetos son exactamente el mismo objeto. Dos cadenas pueden ser objetos diferentes, pero tienen el mismo valor (tienen exactamente los mismos caracteres en ellas). Use el método .equals () para comparar cadenas de igualdad.

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

Tu gender == "Male" realidad está comparando las referencias de objeto para el gender del objeto y un objeto diferente Male . Lo que tienes que usar es el método .equals() para comparar el valor de los objetos.

prueba esto

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

estabas terminando tu statement if(gender.equals(g1)); < < --- aquí agregando ";"

 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."; 

prueba esto.

  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); 

Salida:

 Welcome Mr. 

Esto debería funcionar:

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

Recuerde, no usar ; después de la statement if .

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

Tiene punto y coma después de if.REMOVE IT.

En realidad, todos los códigos funcionan bien aquí, pero su problema probablemente provenga de su variable de gender . ¿ System.out.println(gender); hacer un simple System.out.println(gender); antes de la comparación?

Puede usar la función contentEquals (). Puede ayudarte …

Este trabajo para mí:

  if (email.equals("fahim@gmail.com") && pass.equals("123ss") ){ Toast.makeText(this,"Logged in",Toast.LENGTH_LONG).show(); } else{ Toast.makeText(this,"Logged out",Toast.LENGTH_LONG).show(); } 

Intentalo:

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