Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: javalopez en 06 de Junio 2015, 02:00

Título: Java diferencia de comparar texto con compareTo, == ó equals Ejercicio CU00657B
Publicado por: javalopez en 06 de Junio 2015, 02:00
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.
Título: Re:Ejercicio CU00657B
Publicado por: DRANXZ88 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

}
Título: Re:Ejercicio CU00657B
Publicado por: Dan_SB en 06 de Junio 2015, 03:14
Hola ariel

El código es correcto!, aunque podríamos decir un "casi"... por un simple detallito:
(http://i.imgur.com/SvqUEWs.png)

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!
(http://i.imgur.com/i9cee0U.png)

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!