Autor Tema: Mostrar las letras de una palabra con bucle for Java Ejercicio CU00658B  (Leído 17835 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas tardes

Hago entrega del ejercicio con el siguiente enunciado:

Crea una clase con un método main que pida una entrada de teclado y usando un bucle for, el método length de la clase String y el método substring de la clase String, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:

Letra 1: a
Letra 2: v
Letra 3: e


Aqui mi clase SeparaCadena:

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

public class SeparaCadena {
public SeparaCadena(){}

public String Lectura(){
    Scanner lee = new Scanner(System.in);
    String dato;
    dato = lee.nextLine();
    return dato;
}

public void SeparaCaracteres(){
    String data;
    SeparaCadena Funciones = new SeparaCadena();
    System.out.println("Ingresa una frase: ");
    data =  Funciones.Lectura();
    for (int i = 0, j = 0; i< data.length(); i++, j++){
        System.out.println(data.substring(j,i+1));
    }
}
}

Clase Main:

Código: [Seleccionar]
package DesCaracteres;

public class Main {
    public static void main (String[]args){
         SeparaCadena operacion = new SeparaCadena();
         operacion.SeparaCaracteres();
    }
}

Como se ve, cree otra variable en el for (la J) para que fuese contando el inicio de la cadena... Ejemplo:

"Raton".SubString(j, i+1)

Cuando J vale 0 (parte desde el espacio) y la variable i vale 1 (Es la R). Se imprime R

Cuando J vale 1 (parte de la R) y la variable i vale 2 (Es la A). Se imprime A

Cuando J vale 2 (parte de la A) y la variable i vale 3 (Es la T). Se imprime T

... y así sucesivamente...



Cualquier Comentario, mejora, no duden es decirlo!
« Última modificación: 05 de Abril 2015, 23:42 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Hola Dan_SB!

Tu respuesta a este ejercicio no es del todo correcta, no has enumerado las letras o caracteres de la frase escrita. También se puede simplificar tu código para que con menos lineas de código, sea igual o mas eficiente, cuando termines un programa te recomiendo que te cientes a revisar el código y que lo compactes lo mas posible, como? eliminando todo aquello que este de mas o que no sea necesario, por ejemplo en tu código la variable j de tipo int no es necesaria.

A continuación dejo tus dos clases editadas y comentadas para que tengas una idea de a lo que me refiero:

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

public class SeparaCadena
{
    public SeparaCadena()
    {
      //Constructor general
    }

    public String lectura()//El nombre de un método ha de comenzar siempre con letra minúscula
    {
        Scanner lee = new Scanner(System.in);
        return lee.nextLine();
    }

    public void separaCaracteres(String data)/*Fíjate que ahora este método recibe un parámetro, y que no llama al método lectura(); para cumplir su tarea,
    ahora los dos métodos de esta clase son independientes y son usados por el método main para cumplir el objetivo del programa.*/
    {
        for (int i = 0; i< data.length(); i++){//La variable j no es necesaria, podemos simplificar el metodo solo usando la variable i.
            System.out.println(data.substring(i,i+1));
        }
    }
}

Clase Main:
Código: [Seleccionar]
/*Un método main, se encarga de dirigir el programa, si te fijas aquí el método main muestra los mensajes que en tu código muestra el método separaCaracteres
   y también crea y utiliza una instancia de la clase SeparaCadena. Para que tu programa este bien diseñado, es preferible seguir un orden a la hora de programar, cada clase
   o método debe de hacer solo su tarea o funcion y no las tareas o funciones de otras clases o métodos.*/
public class Main {
    public static void main (String[]args)
    {
        System.out.println("Ingresa una frase: ");
        SeparaCadena operacion = new SeparaCadena();//Creamos una instancia de la clase SeparaCadena para invocar los métodos lectura(): y separaCaracteres(String data);
        String data = operacion.lectura();//Creamos una variable de tipo String y le asignamos como valor lo que escriba el usuario por teclado
        System.out.println("\fLa frase que has escrito contiene los siguientes " + data.length() + " caracteres:\n");
        operacion.separaCaracteres(data);//El método separaCaracteres(String data); recibe la frase (data) escrita por el usuario para desglosarla.
    }
}

Como reto te propongo que edites este código para que muestre el resultado tal y como lo pide el enunciado de este ejercicio, ejemplo si el usuario escribe "Raton" por pantalla debe de mostrarse:

Letra 1: R
Letra 2: a
Letra 3: t
Letra 4: o
Letra 5: n

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

 

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