Autor Tema: duda de un if con un valor String...Java siempre dice que es igual a H  (Leído 47220 veces)

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Hola tengo una duda de algo MUY simple y MUY basica pero no doy con la solución.Lo que quiero con el siguiente codigo es que al introducir el sexo, en caso de introducir "m" o "M" me indique que el sexo es "mujer", o en este caso "M", y si no, sexo pase a ser igual a "H". Se como hacerlo declarando sexo como char(el programa está hecho de esta manera en los comentarios de abajo(/*..........*/)), pero no sé el motivo por el cual no lo puedo hacer declarando la variable sexo como String, ya que siempre me acaba diciendo que Sexo=H, o sea ni si quiera hacer correctamente el primer "if" ya que no reconoce lo de "sexo==m" o "sexo=="M". Quisiera que alguien me dijera en que fallo y el motivo.Muchas gracias de antemano, saludos!!!


Código: [Seleccionar]
import java.util.Scanner;
public class Prueba {

public static void main(String[]args){

String sexo;
Scanner lectura=new Scanner(System.in);
System.out.println("Sexo?");
sexo=lectura.next();

if(sexo=="m"||sexo=="M"){
sexo="M";

}else{

sexo="H";
}

System.out.println("El sexo es:"+sexo);
}


}
/*
import java.util.Scanner;
public class Probes2 {

public static void main(String[]args){

char sexo;
Scanner lectura=new Scanner(System.in);
System.out.println("Sexo?");
sexo=lectura.next().charAt(0);

if(sexo=='m'||sexo=='M'){
sexo='M';

}else{

sexo='H';
}

System.out.println("El sexo es:"+sexo);
}


}
*/
« Última modificación: 21 de Enero 2015, 23:18 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:duda de un if con un valor String...Java
« Respuesta #1 en: 20 de Enero 2015, 23:21 »
Hola caludo

En Java la comparación quen quieres hacer se hace así:

if (sexo.equals("m") || sexo.equals("M")) {
    sexo = "M";
}

También se puede poner:

if (sexo.equalsIgnoreCase("m")) {
    sexo = "M";
}

que da por válida lo mismo mayúsculas que minúsculas.

Enlace recomendado:
https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=642:clase-arrays-del-api-java-metodos-equals-comparar-copyof-copiar-fill-rellenar-ejemplos-cu00676b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Saludos

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:duda de un if con un valor String...Java
« Respuesta #2 en: 21 de Enero 2015, 01:42 »
Muchisimas  gracias por la respuesta, me ha servido de gran ayuda. Pero quisiera saber si aún así es posible compararlo de esa manera(solo es curiosidad) ya que si en lugar de hacerlo con un String lo hago con un char si me funciona el programa, o si es un entero,por ejemplo, tambien.Por eso era mi duda sobre por que no me deja hacerlo con String de la manera que lo hago.
Por ejemplo con enteros:
Código: [Seleccionar]

int numero;
Scanner lectura=new Scanner(System.in);
System.out.println("numero?");
numero=lectura.next();

if(numero==5||numero==6){
numero=1000;

 }else{

numero=2000;
 }




Jarper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 20
    • Ver Perfil
Re:duda de un if con un valor String...Java
« Respuesta #3 en: 21 de Enero 2015, 15:01 »
Con un String no es posible realizarlo ya que String es de tipo Objeto.
Al realizar una comparativa de un objeto con otra cosa, lo que se está comparando es el puntero del objeto, no el valor del objeto en si.
Parece que puede ser primitivo como lo es char o int, pero no lo es.
Por eso un String puede invocar el método equals().

Atentamente.

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:duda de un if con un valor String...Java
« Respuesta #4 en: 21 de Enero 2015, 15:16 »
muchísimas gracias a ambos!!!
Todo aclarado!!!

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:duda de un if con un valor String...Java siempre dice que es igual a H
« Respuesta #5 en: 23 de Enero 2015, 00:47 »
Hola Jasper(o cualquiera que me pueda responder)!Entiendo lo que me has dicho, pero entonces por qué en este caso siendo similar al "programa" anterior( con la diferencia que aqui no uso la clase Scanner) si me funciona correctamente la comparación del String??? Sé que insisto en algo que es muy básico pero no quisiera quedarme  con la duda
Código: [Seleccionar]
public class Letra{
public static void main(String[]args){
String nombre="J";

if(nombre=="J"){
System.out.println("La letra es J");

}else{
System.out.println("La letra no coincide");
}

}
}

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1951
    • Ver Perfil
Re:duda de un if con un valor String...Java siempre dice que es igual a H
« Respuesta #6 en: 23 de Enero 2015, 08:04 »
Hola, no debes usar == para comparar objetos porque te genera resultados impredecibles y en programación esto no es aceptable. Para comparar objetos debes usar equals, que te genera resultados correctos siempre. Tienes la explicación en el curso Java, http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:duda de un if con un valor String...Java siempre dice que es igual a H
« Respuesta #7 en: 23 de Enero 2015, 09:24 »
Muchas gracias!!!!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".