Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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:
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:
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!
-
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:
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:
/*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!!