Autor Tema: Java diferencia de comparar texto con compareTo, == ó equals Ejercicio CU00657B  (Leído 4517 veces)

javalopez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Buenas noches, aquí les dejo el código que realicé para el ejercicio pedido. Para comparar el primer carácter utilicé el método compareTo igualado a cero por no poder comparar un String mediante =="a", (espero esta solución sea correcta).

Código: [Seleccionar]
import java.util.Scanner;

public class TestAnalizaCadenas{

    public static void main (String [ ] args) {

        System.out.println ("Por favor introduzca una cadena por teclado:");
        Scanner entradaEscaner = new Scanner (System.in);
        String entradaTeclado = entradaEscaner.nextLine ();
        String primeraLetra=entradaTeclado.substring(0,1);

        System.out.println ("Entrada recibida por teclado es: \"" + entradaTeclado +"\"");

        if(primeraLetra.compareTo("a")==0){
            System.out.println("La primera letra del texto ingresado es una \"a\"");
        }
        else{
            System.out.println("La primera letra del texto ingresado NO es una \"a\"");
        }

        int cantidadCaracteres=entradaTeclado.length();

        if(cantidadCaracteres>=5&&cantidadCaracteres<=15){
            System.out.println("La cadena ingresada contiene entre 5 y 15 caracteres");
        }
        else if(cantidadCaracteres<5){
            System.out.println("La cadena ingresada contiene menos de 5 caracteres");
        }
        else{
            System.out.println("La cadena ingresada contiene mas de 15 caracteres");
        }
    } //Cierre del main

}

Saludos, Ariel.
« Última modificación: 07 de Junio 2015, 22:30 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Ejercicio CU00657B
« Respuesta #1 en: 06 de Junio 2015, 02:59 »
El mensaje que debe mostrar por pantalla tiene que se así según el ejercicio
Citar
Por pantalla se debe mostrar: “La cadena introducida tiene entre 5 y 15 caracteres y no comienza por a”.
Y usando compareTo("a") funciona si es minúscula pero si el usuario ingresa una mayúscula ya dice que no es una a.

Hice alguna modificación a tu ejercicios espero que te sirva
Código: [Seleccionar]
import java.util.Scanner;

public class TestAnalizaCadenas {

    public static void main(String[] args) {

        System.out.println("Por favor introduzca una cadena por teclado:");
        Scanner entradaEscaner = new Scanner(System.in);
        String entradaTeclado = entradaEscaner.nextLine();
        String primeraLetra = entradaTeclado.substring(0, 1);

        String letra;
        String palabra;
        if (entradaTeclado.substring(0, 1).equalsIgnoreCase("a")) {
            letra = "comienza por a";
        } else {
            letra = " no comienza por a";
        }

        int cantidadCaracteres = entradaTeclado.length();

        if (cantidadCaracteres >= 5 && cantidadCaracteres <= 15) {
            palabra = "entre 5 y 15";
        } else if (cantidadCaracteres < 5) {
            palabra = "menos de 5 ";
        } else {
            palabra = "mas de 15";
        }
        System.out.println("La cadena introducida tiene " + palabra + " caracteres y " + letra + ".");
    } //Cierre del main

}

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio CU00657B
« Respuesta #2 en: 06 de Junio 2015, 03:14 »
Hola ariel

El código es correcto!, aunque podríamos decir un "casi"... por un simple detallito:


Como se puede ver (y como te menciono DRANX mas arriba), no reconoce una A mayúscula. Hay varias formas para resolver esto, usare la solución que diste, el uso del "compareTo"... con esto bastaria:

Código: [Seleccionar]
if(primeraLetra.compareTo("a")== 0 || primeraLetra.compareTo("A")== 0){
            System.out.println("La primera letra del texto ingresado es una \"a\"");
        }

Y ahora si reconoce!


Tu respuesta no es que este incorrecta, esta bien, solo fue ese pequeño detalle que acabe de agregar  :)

DRANX utilizo un equalsIgnoreCase, esto compara la cadena string con lo que se desea comprobar y devuelve true si el carácter o cadena concuerda con la condición, sea mayúscula o no.

Hay mas soluciones para comprobar... como el metodo matches, equals... y si quieres complicarte mas, hasta convertir una cadena string a char para poder utilizar el operador "==" (solo digo, no te compliques...  ::) )

Saludos!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

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