Autor Tema: Java diferencia entre equals e equalsIgnoreCase admite mayúsculas y min CU00657B  (Leído 9885 veces)

luis sanz

  • Sin experiencia
  • *
  • Mensajes: 49
    • Ver Perfil
Mi propuestas de solución para el ejercicio CU00657B:

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

public class Ejercicio
{
   
    public static void main(String[] args)
    {
        System.out.println("Empezamos el programa, por favor ingrese una cadena:");
        String entradaTeclado="";
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
       
        String x=entradaTeclado.substring(0,1);
        int y=entradaTeclado.length();
        String letra;
        if(x.equals("a"))
        {
             letra=" si comienza por a";
        }
        else
        {
            letra=" no comienza por a";
        }
        if(y<5)
        {
            System.out.println("La cadena introducida tiene menos de 5 caracteres y \""+letra+"\"");
        }
        if(y>5 && y<15)
        {
            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y \""+letra+"\"");
        }
        if(y>15)
        {
            System.out.println("La cadena introducida tiene mas de 15 caracteres y \""+letra+"\"");
        }
               
           
     
    }
}

Hola, si se dan cuenta he usado el método equals de la clase String y mi pregunta es si este ejercicio se podría resolver sin utilizar este método y hacerlo tal y como nos indica en el ejercicio usando: condicionales, método length y método substring. He estado probando con muchas lógicas pero la única solución que encontré es usando el método "equals". Le agradecería mucho si me ayudaran a sacarme de esta duda.
« Última modificación: 10 de Agosto 2015, 10:58 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:CU00657B AAP JAVA - PEDIR DATOS POR CONSOLA (TECLADO)
« Respuesta #1 en: 09 de Agosto 2015, 23:37 »
Hola Luis:

Estuve analizando tu ejercicio y lo veo bien. Igualmente hay algunos detalles a considerar para mejorar tu código.

Contestando a tus preguntas:
1) El método equals() está muy bien utilizado para determinar si la letra inicial de la palabra ingresada es una letra "a".
De todos modos te sugerería que en vez de utilizar el método equals() usaras el método equalsIgnoreCase() para que no discrimine si comienza con una letra "a" o una letra "A".

2) Los métodos lenght() y substring() están muy bien usados también.

Por otro lado habría que hacer una modificación en la línea:

Código: [Seleccionar]
if(y>5 && y<15)
por

Código: [Seleccionar]
if(y>=5 && y<=15)
ya que de lo contrario no estaría contemplada la opción cuando la palabra ingresada tiene 5 letras o 15 letras.

Y como sugerencia final: recomendaría nombrar los atributos con nombres más significativos. Por ejemplo el atributo 'x' podría llamarse más bien 'letraInicial', y el atributo 'y' podría bien llamarse 'longitudPalabra'. Estos nombres están más ligados a lo que representan, y nos va a servir por si en un futuro (u otro programador) tuviera que trabajar sobre el código.

luis sanz

  • Sin experiencia
  • *
  • Mensajes: 49
    • Ver Perfil
Re:CU00657B AAP JAVA - PEDIR DATOS POR CONSOLA (TECLADO)
« Respuesta #2 en: 10 de Agosto 2015, 01:13 »
Muchísimas gracias mi amigo, se lo agradezco.

luis sanz

  • Sin experiencia
  • *
  • Mensajes: 49
    • Ver Perfil
Re:CU00657B AAP JAVA - PEDIR DATOS POR CONSOLA (TECLADO)
« Respuesta #3 en: 10 de Agosto 2015, 04:28 »
Ejercicio modificado:
Código: [Seleccionar]
import java.util.Scanner;

public class Ejercicio
{
   
    public static void main(String[] args)
    {
        System.out.println("Empezamos el programa, por favor ingrese una cadena:");
        String entradaTeclado="";
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
       
        String letraInicial=entradaTeclado.substring(0,1);
        int longitudPalabra=entradaTeclado.length();
        String letra;
        if(letraInicial.equalsIgnoreCase("a"))//equalsIgnoreCase()----> incluye minusculas o mayusculas. en cambio equals solo la que pones en el parentesis
        {
             letra=" si comienza por a";
        }
        else
        {
            letra=" no comienza por a";
        }
        if(longitudPalabra<5)
        {
            System.out.println("La cadena introducida tiene menos de 5 caracteres y \""+letra+"\"");
        }
        if(longitudPalabra>=5 && longitudPalabra<=15)
        {
            System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y \""+letra+"\"");
        }
        if(longitudPalabra>15)
        {
            System.out.println("La cadena introducida tiene mas de 15 caracteres y \""+letra+"\"");
        }
             
    }
}

 

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