Autor Tema: ¿Por qué si uso == para comparar dos letras o cadenas no funciona Java? CU00657B  (Leído 2646 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
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
« Última modificación: 19 de Junio 2017, 21:01 por Alex Rodríguez »

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Re:Ejercicio CU00657B
« Respuesta #1 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
« Última modificación: 19 de Junio 2017, 21:01 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio CU00657B
« Respuesta #2 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

 

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