Autor Tema: Ejemplo Scanner Java diferencia entre equals y equalsIgnoreCase CU00657B  (Leído 11634 veces)

mauriaguerrido

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Buenas!

Consulta: Por qué en la segunda sentencia If cuando se compara la variable caracterA == "A" || caracterA == "a", por más que sea verdadero, da falso y pasa a Else?.

Clase TestMain
Código: [Seleccionar]
import java.util.Scanner;
public class TestMain {
    public static void main (String [ ] args) {
        System.out.println ("Introduzca un texto:");
        String cadena = "";
        String caracterA = "";
        Scanner sc = new Scanner (System.in);
        cadena = sc.nextLine ();
        caracterA = cadena.substring (0,1);
        if (cadena.length () < 5) {
            System.out.println ("El texto escrito tiene menos de 5 caracteres.");
        }else if (cadena.length () >= 5 && cadena.length () <= 15) {
            System.out.println ("El texto escrito tiene entre 5 y 15 caracteres.");
        }else {
            System.out.println ("El texto tiene más de 15 caracteres.");
        }
        if (caracterA == "A" || caracterA == "a") {
            System.out.println ("El texto comienza con el caracter: " + caracterA);
        }else {
            System.out.println ("El texto no comienza con el caracter A.");
        }
        System.out.println ("Verifico que el caracter guardado en la variable es \"A\" o \"a\": " + caracterA);
    }
}

De todas formas, buscando en el foro di con la respuesta. No era la idea pero luego de ver que no encontraba la forma de solucionarlo decidí ver resultados de otros usuarios.
Aquí esta bien hecho (de todos modos no se porque de la forma anterior no se resuelve):

TestMain2
Código: [Seleccionar]
import java.util.Scanner;
public class TestMain2 {
    public static void main (String [ ] args) {
        System.out.println ("Introduzca un texto:");
        String cadena = "";
        String caracterA = "";
        Scanner sc = new Scanner (System.in);
        cadena = sc.nextLine ();
        caracterA = cadena.substring (0,1);
        if (cadena.length () < 5) {
            System.out.print ("El texto escrito tiene menos de 5 caracteres");
        }else if (cadena.length () >= 5 && cadena.length () <= 15) {
            System.out.print ("El texto escrito tiene entre 5 y 15 caracteres");
        }else {
            System.out.print ("El texto tiene más de 15 caracteres.");
        }
        if (cadena.substring (0,1).equalsIgnoreCase ("a")) {
            System.out.println (" y comienza con el caracter " + caracterA + ".");
        }else {
            System.out.println (" y no comienza con el caracter A/a.");
        }
    }
}

Saludos!
« Última modificación: 11 de Abril 2015, 10:02 por Alex Rodríguez »

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio: CU00657B - Pedir datos por consola (teclado) en Java.
« Respuesta #1 en: 09 de Abril 2015, 20:03 »
Hola mauria!!!

Citar
Por qué en la segunda sentencia If cuando se compara la variable caracterA == "A" || caracterA == "a", por más que sea verdadero, da falso y pasa a Else?

El caso que te sucede ahí, es que estas usando un "String". . String es un objeto, y tu no puedes usar "==" con objetos. El "==" solo se utiliza con los tipos primitivos (char, int, double... etc).

En ese pedazo usa un equals:

caracterA.equals("A") || caracterA.equals("a")

Con esto es que puedes comparar objetos. O bien, ya que viste el "equalsIgnoreCase" lo puedes usar tambien aqui para ahorrarte espacio en ese if.

caracterA.equalsIgnoreCase("A")

Ignore Case, lo que hace es que acepta todo sin importar que sea mayúscula o minúscula.

Espero que te haya ayudado mi humilde comentario :)
"Luchar por tus sueños y cumplirlos... eso es vivir.."

mauriaguerrido

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:Ejercicio: CU00657B - Pedir datos por consola (teclado) en Java.
« Respuesta #2 en: 10 de Abril 2015, 07:11 »
Hola Dan_SB.

Comprendido! Gracias por la ayuda  ;D.

 

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