Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: LuisM en 23 de Mayo 2017, 14:44

Título: ¿Por qué si uso == para comparar dos letras o cadenas no funciona Java? CU00657B
Publicado por: LuisM en 23 de Mayo 2017, 14:44
Hola a todos !!, paso a poner el código para la solución del problema CU00657B del tutorial de programación Java con BlueJ. Muchas gracias desde ya.

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
//Código de nuestra clase principal ejemplo aprenderaprogramar.com
public class TestPrograma1 {
       public static void main (String [ ] args) {
        System.out.println("Por favor introduzca una cadena por teclado:");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
        int largoCadena = entradaTeclado.length();
        String cadena1="";
        String cadena2="";
        if (largoCadena>0) {
            if (entradaTeclado.startsWith("a")==true) {cadena2=" y comienza con la letra a";}
            else {cadena2=" y no comienza con la letra a";}
           
            int opcion = 0;
            if (largoCadena>=5 && largoCadena<=15) {opcion = 2;} else if (largoCadena>15){opcion=3;} else {opcion=1;}
            switch (opcion) {
                case 1:cadena1="La cadena tiene menos de 5";break;
                case 2:cadena1="La cadena tiene entre 5 y 15 caracteres";break;
                case 3:cadena1="La cadena tiene mas de 15";break;
                default:break;
            }
        }
        else {cadena1="No ingreso una cadena";}
             
        System.out.println(cadena1+cadena2);
        }
    } //Cierre de la clase
Título: Re:Ejercicio CU00657B
Publicado por: LuisM en 23 de Mayo 2017, 15:24
Otra forma de resolverlo (contempla letra A) y una pregunta.

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
//Código de nuestra clase principal ejemplo aprenderaprogramar.com
public class TestPrograma2 {
       public static void main (String [ ] args) {
        System.out.println("Por favor introduzca una cadena por teclado:");
        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner(System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
        int largoCadena = entradaTeclado.length();
        String cadena1="";
        String cadena2="";
        if (largoCadena>0) {
            String letra = entradaTeclado.substring(0,1);
            if (letra.equalsIgnoreCase("a")==true) {cadena2=" y comienza con la letra a";}
            else {cadena2=" y no comienza con la letra a";}
           
            int opcion = 0;
            if (largoCadena>=5 && largoCadena<=15) {opcion = 2;} else if (largoCadena>15){opcion=3;} else {opcion=1;}
            switch (opcion) {
                case 1:cadena1="La cadena tiene menos de 5";break;
                case 2:cadena1="La cadena tiene entre 5 y 15 caracteres";break;
                case 3:cadena1="La cadena tiene mas de 15";break;
                default:break;
            }
        }
        else {cadena1="No ingreso una cadena";}
             
        System.out.println(cadena1+cadena2);
        }
    } //Cierre de la clase


¿Por qué si uso: if (entradaTeclado.substring(0,1)=="a")... y la cadena ingresada comienza con la letra "a" lo considera distinto?. Muchas gracias desde ya.

Saludos
Luis
Título: Re:Ejercicio CU00657B
Publicado por: pedro,, en 23 de Mayo 2017, 16:12
Hola LuisM

Para comparar String debes usar el método equals() o el método equalsIgnoreCase().

Código: [Seleccionar]
entradaTeclado.substring(0,1).equals("a")
Si entreadaTeclado.substring(0,1) fuese una a, esto devolvería true.

Saludos. ;D