Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Dan_SB en 02 de Abril 2015, 20:56

Título: Mostrar las letras de una palabra con bucle for Java Ejercicio CU00658B
Publicado por: Dan_SB en 02 de Abril 2015, 20:56
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...

(http://i.imgur.com/CD8p2TZ.png)

Cualquier Comentario, mejora, no duden es decirlo!
Título: Re:Ejercicio CU00658B Mostrar las letras de una palabra con bucle for Java
Publicado por: Jorge lopez en 03 de Abril 2015, 16:34
 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!!