Autor Tema: Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).  (Leído 6345 veces)

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas.
Esta fue mi solución a este ejercicio. Estuve mirando algunos métodos de la clase String y quise aplicarlos. Espero sugerencias. De ante mano, muchas gracias.


Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class TestDeposito here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class TestDeposito{
   
    public TestDeposito(){
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("Digite su texto: ");
        String texto = sc.nextLine();
       
        if (texto.length() > 4 && texto.length() < 16){
            if(texto.substring(0,1).equalsIgnoreCase("a")){
                System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por a");
            }else{
                System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y no comienza por a");
            }
        }else{
            if(texto.substring(0,1).equalsIgnoreCase("a")){
                System.out.println("La cadena introducida no esta entre 5 y 15 caracteres y comienza por a");
            }else{
                System.out.println("La cadena introducida no esta entre 5 y 15 caracteres y no comienza por a");
            }
        }
    }
}

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #1 en: 14 de Octubre 2014, 19:33 »
Hola Cabanota
Tu código compila y ejecuta bien.
Pero sólo distingue el texto que está entre 5 y 15 caracteres y todo lo demás.
Cuando en el enunciado del ejercicio se pedía discriminar 3 valores distintos
Citar
a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.

Seguro que añadiendo algún 'if' se podrá solucionar.

El uso de equalsIgnoreCase("a") viene muy bien aquí.

Saludos

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #2 en: 14 de Octubre 2014, 19:40 »
 Hola  Cabanota!

Algunas personas suelen confundir lo que se requiere en el enunciado de este ejercicio y precisamente este es tu caso, por lo cual intentare explicarte lo que requiere en realidad.

El enunciado dice:
Citar
Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método
length de la clase String y el método substring de la clase String, muestre un mensaje indicando:
a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.
b) Si la cadena introducida comienza por la letra a.
Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe mostrar: “La cadena
introducida tiene entre 5 y 15 caracteres y no comienza por a”.
La confusion surge de la parte a) del ejercicio, donde pide tres condiciones diferentes a tomar en cuenta, 1: Si la cadena introducida tiene menos de 5 caracteres, se muestra un mensaje. 2: Si la cadena introducida tiene entre 5,6,7... 15 caracteres, se muestra un mensaje. 3: Si la cadena introducida tiene mas de 15 caracteres, se muestra
un mensaje. Cada mensaje mostrado relacionado con la condición que se cumple para que este sea mostrado y con lo que pide la parte b) del ejercicio. Ejem: si la cadena introducida es "Alas" se debería mostrar por pantalla: La cadena introducida tiene menos de 5 caracteres y comienza por la letra "A".

Veo que has hecho bien al investigar sobre el método equalsIgnoreCase(String anotherString) e implementarlo en este ejercicio.

En cuanto al uso del condicional "if" tienes algunos if con else anidados unos dentro de otro, para lograr lo que quieres, lo correcto seria que hagas uso de if con else if evitando anidarlos uno dentro de otro. Tu codigo debería quedar mas o menos así:
Código: [Seleccionar]
if(..)
{
 ...;
}
else if(...)
{
 ...;
}

Otra recomendación es especificar exactamente con que "a" (mayúscula o minúscula) comienza la cadena, para esto sustituimos tu linea de codigo:
Código: [Seleccionar]
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por a"); por esta linea de codigo:
Código: [Seleccionar]
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por " + texto.substring(0,1));
Espero haberme explicado correctamente.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #3 en: 14 de Octubre 2014, 20:17 »
Muchas gracias por sus anotaciones. Ciertamente no había comprendido bien el enunciado.. Que falla,, jejejeje.. Supongo que es una falla de un principiante en este mundo de la programación. He anotado sus correcciones y decidí corregir de la siguiente manera. De ante mano muchas gracias y si tienen alguna u otra anotación para mejorar mi proceso sera bien recibida.

Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class TextEjemplo here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */

public class TestEjemplo{
   
    public TestEjemplo(){
    }

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("Digite su texto: ");
        String texto = sc.nextLine();
       
        if (texto.length() < 5){
            if(texto.substring(0,1).equalsIgnoreCase("a")){
                System.out.println("La cadena introducida tiene menos de 5 caracteres y comienza por \"" + texto.substring(0,1) + "\"");
            }else{
                System.out.println("La cadena introducida tiene menos de 5 caracteres y no comienza por \"a\"");
            }
        }else if(texto.length() > 4 && texto.length() < 16){
                if(texto.substring(0,1).equalsIgnoreCase("a")){
                    System.out.println("La cadena introducida esta entre 5 y 15 caracteres y comienza por \"" + texto.substring(0,1) + "\"");
                }else{
                    System.out.println("La cadena introducida esta entre 5 y 15 caracteres y no comienza por \"a\"");
                }
        }else{
            if(texto.substring(0,1).equalsIgnoreCase("a")){
                    System.out.println("La cadena introducida tiene mas de 15 caracteres y comienza por \"" + texto.substring(0,1) + "\"");
            }else{
                    System.out.println("La cadena introducida tiene mas de 15 caracteres y no comienza por \"a\"");
            }
       
        }
    }
}

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #4 en: 14 de Octubre 2014, 22:01 »
 Mucho mejor!

Este nuevo código si esta cumpliendo con lo que se requiere en el enunciado, no obstante hay un punto el cual te comentare nuevamente sobre el condicional "if".

Estas anidando un condicional "if" dentro de otro prácticamente sin necesidad, a la hora de diseñar un código tenemos que optar porque este sea lo mas corto, claro y eficiente posible.

Te sugiero que analices el siguiente codigo a modo para que veas como podrías hacer un uso correcto del condicional "if"
Código: [Seleccionar]
import java.util.Scanner;
public class TestPedirDatosPorConsola
{
    public static void main(String []args)
    {
        System.out.println(" Hola!\nPor favor introduce un texto");
        String cadena = "";
        Scanner sc = new Scanner(System.in);
        cadena = sc.nextLine();
        int numeroCaracteres = cadena.length();
        if(numeroCaracteres < 5 && cadena.substring(0,1).equalsIgnoreCase("a"))
        {
            System.out.println("El texto introducido consta de menos de 5 caracteres y comienza con la letra \"" + cadena.substring(0,1) + "\".");
        }
        else if(numeroCaracteres < 5)
        {
            System.out.println("El texto introducido consta de menos de 5 caracteres y no comienza con la letra \"" + "a" + "\".");
        }
        else if(numeroCaracteres >=5 && numeroCaracteres <=15 && cadena.substring(0,1).equalsIgnoreCase("a"))
        {
            System.out.println("El texto introducido consta de entre 5 y 15 caracteres y comienza con la letra \"" + cadena.substring(0,1) + "\".");
        }
        else if(numeroCaracteres >=5 && numeroCaracteres <=15)
        {
            System.out.println("El texto introducido consta de entre 5 y 15 caracteres y no comienza con la letra \"" + "a" + "\".");
        }
        else if(numeroCaracteres >= 16 && cadena.substring(0,1).equalsIgnoreCase("a"))
        {
            System.out.println("El texto introducido consta de entre 5 y 15 caracteres y comienza con la letra \"" + cadena.substring(0,1) + "\".");
        }
        else if(numeroCaracteres >=16)
        {
            System.out.println("El texto introducido consta de mas de 15 caracteres y no comienza con la letra \"" + "a" + "\".");
        }
        else{}
    }
}
De mi parte considero que puedes continuar avanzando con el curso teniendo estos consejos pendientes.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

BashMind

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #5 en: 24 de Octubre 2014, 17:35 »
Muchas gracias por su ayuda a todos me ayudo este método equalsIgnorecase no lo conocía mi código me salió asi :
Código: [Seleccionar]
import java.util.Scanner;
public class IngreseCadena{
    public static void main (String [] args){
        System.out.println("Por favor introduzca una cadena por teclado:");
        String entradaTeclado="";
        Scanner entradaEscaner=new Scanner (System.in);
        entradaTeclado=entradaEscaner.nextLine();
        if (entradaTeclado.length()<5 ){
             System.out.println("La cadena introducida tiene menos de 5 caracteres ");}
         if (  entradaTeclado.length()>=5 &&    entradaTeclado.length()<=15){
              System.out.println("La cadena introducida tiene entre 5 y 15 caracteres");}
              if (entradaTeclado.length()>15){
                  System.out.println("La cadena introducida tiene mas de 15 caracteres");}
                  if(entradaTeclado.substring(0,1).equalsIgnoreCase("a")){
                      System.out.println("y comienza con "+entradaTeclado.substring(0,1));}
                    else{
                        System.out.println("y no comienza con "+ entradaTeclado.substring(0,1));}
                    }
}
acepto cualquier sugerencia .
               
« Última modificación: 24 de Octubre 2014, 20:28 por Jorge lopez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #6 en: 24 de Octubre 2014, 20:26 »
 Hola  BashMind!

Antes que nada te pongo en conocimiento que cuando vayas a introducir código en el foro, antes presiona el botón # (insertar codigo) que se encuentra arriba del campo de escritura, te saldrán las siguientes etiquetas: [code][/code] y a continuación procede a pegar el codigo en medio de esas etiquetas. Ejemplo: [code]aquíElCódigo ...[/cod]. Una vez escrito todo, pulsa el botón previsualizar para comprobar si se ve bien y pulsa publicar cuando estés conforme según la previsualizacion.

Respecto a tu ejercicio:

1ro: El código que has presentado no compila, debido a la falta de la llave (}) de cierre de la clase, me he tomado la libertad de corregir esto agregando dicha llave y a su vez te aconsejo que siempre te asegures de que estas copiando el código de una clase correctamente, así evitas este error en tus futuras publicaciones.

2do: El nombre de tu clase no es adecuado, el nombre de una clase dice lo que es o lo que hace el nombre que le das (IngreseCadena) se correspondería mas con un mensaje mostrado por pantalla (System.out.println("Ingrese cadena"); ) para pedir al usuario que ingrese una cadena de texto. Un nombre correcto para esta clase podria ser public class AnalizadorDeCadena puesto que con un nombre como este, quien lee el nombre de la clase puede deducir que hace la clase, recibe una cadena y analiza si es menor de 5 caracteres, entre 5 y 15 caracteres o si es mayor de 15 caracteres y también analiza si la cadena comienza por la letra "a"  o no. El punto es que el nombre de una clase debe de ser descriptivo de lo que es o lo que hace.

3ro: Tu código presenta una deficiencia, por ejemplo si le pasamos como cadena el String "Hola" este devuelve por pantalla:
Citar
La cadena introducida tiene menos de 5 caracteres
y no comienza con H
donde hay dos puntos a tomar en cuenta, 1ro: dice que NO comienza con la letra "H" cuando se observa que si comienza con la letra "H". y 2do: Que usas dos instrucciones System.out.println(); para mostrar un mensaje por pantalla que se debería de mostrar solo haciendo uso de una sola instrucción System.out.println();

4to: En tu código haces uso un if por cada situación, te recomendaría usar un if seguido de los else if necesarios para así aumentar la eficiencia del código.

En conclusión te recomendaría que mires algunas respuestas de este ejercicio a fin de que analices y replantees este ejercicio usando como apoyo el analisis del código de algunos compañeros en este hilo y corrigiendo los puntos ya comentados.

Saludos!  ;)
« Última modificación: 26 de Octubre 2014, 21:02 por Jorge lopez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

BashMind

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Ejercicio: CU00657B del tema: Pedir datos en Java por consola (teclado).
« Respuesta #7 en: 28 de Octubre 2014, 17:56 »
 ;D muchas gracias por tus consejos

 

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