Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jorge lopez en 06 de Julio 2014, 02:22
-
import java.util.Scanner;
public class DetallandoCadenasTexto{
public static void main(String []args){
System.out.println(" Hola! \nPor favor escribe tu nombre.");
Scanner Escaner = new Scanner(System.in);
String nombre = "";
String cadena1 = "";
String siNo = "";
String cadena2 = "";
int cero1 = 0;
int uno1 = 1;
int numCaracter1 = 1;
int cero2 = 0;
int uno2 = 1;
int numCaracter2 = 1;
nombre = Escaner.nextLine();
System.out.println("muchas gracias \"" + nombre + "\" \nahora escribe una cadena de texto para asi poder enumerar cada carácter en una columna.");
cadena1 = Escaner.nextLine();
System.out.println("Ok " + nombre + "! este es el detalle de la cadena de texto que has escrito: \n");
for(int i=0; i<cadena1.length(); i++)
{System.out.println("Caracter :"+ numCaracter1++ + " " + cadena1.substring(cero1++,uno1++));}
System.out.println("\nte gustaría consultar otra cadena de texto?");
siNo = Escaner.nextLine();
if(siNo.equals("si") || siNo.equals("Si") || siNo.equals("SI")){System.out.println("muy bien! por favor introduce la nueva cadena de texto a consultar:");
cadena2 = Escaner.nextLine();
System.out.println("Ok " + nombre + "! este es el detalle de la nueva cadena de texto que has escrito: \n");
for(int i=0; i<cadena2.length(); i++)
{System.out.println("Caracter :"+ numCaracter2++ + " " + cadena2.substring(cero2++,uno2++));}
System.out.println("\nGracias por consultar cadenas de texto, espero que te aya sido de utilidad, feliz resto del dia " + nombre + "\nHasta la próxima! \n;)");}
if(siNo.equals("no") || siNo.equals("No") || siNo.equals("NO"))
{ System.out.println("Ok, como prefieras, gracias por consultar cadenas de texto, espero que te aya sido de utilidad, feliz resto del día " + nombre + "\nHasta la próxima!");}
}
}
Salu2!
-
Hola, el programa está bien planteado y cumple el objetivo propuesto. Pero puedo plantearte algo que es mejorable: al ver el código he visto una cierta proliferación de variables y me he preguntado si eran realmente necesarias tantas variables (además con unos nombres no demasiado claros).
He tardado unos minutos en replantear el código eliminando las siguientes variables: cero1, uno1 , numCaracter1, cero2, uno2, numCaracter2.
Para prescindir de estas variables simplemente me he apoyado en que el contador de un bucle puede ser utilizado dentro del bucle para obtener valores relacionados con él. Por ejemplo el contador i del bucle va tomando valores 0, 1, 2, 3, ... por tanto no me hace falta una variable para ir llevando la cuenta 0, 1, 2, 3, .... ya que puedo usar el propio contador del bucle.
Además el contador del bucle puede usarse para llevar otras cuentas. Por ejemplo si en el bucle quiero contar 1, 2, 3, 4... puedo usar (i+1) en cada pasada del bucle.
Te animo a que replantees el código eliminando esas variables, de esa forma tendrás un código más limpio y mejor diseñado (y te servirá para tenerlo en cuenta en el código que generes en el futuro).
Saludos
-
Excelente consejo César.
e replanteado el código eliminando las variables: cero1, uno1 , numCaracter1, cero2, uno2, numCaracter2, y mejorando el diseño del código al darle mas uso a la variable "i", tal y como lo recomendaste.
import java.util.Scanner;
public class DetallandoCadenasTexto{
public static void main(String []args){
System.out.println(" Hola! \nPor favor escribe tu nombre.");
Scanner Escaner = new Scanner(System.in);
String nombre = "";
String cadena1 = "";
String siNo = "";
String cadena2 = "";
nombre = Escaner.nextLine();
System.out.println("muchas gracias \"" + nombre + "\" \nahora escribe una cadena de texto para asi poder enumerar cada carácter en una columna.");
cadena1 = Escaner.nextLine();
System.out.println("Ok " + nombre + "! este es el detalle de la cadena de texto que has escrito: \n");
for(int i=0; i<cadena1.length(); i++)
{System.out.println("Caracter :"+ (i+1) + " " + cadena1.substring(i,(i+1)));}
System.out.println("\nte gustaría consultar otra cadena de texto?");
siNo = Escaner.nextLine();
if(siNo.equals("si") || siNo.equals("Si") || siNo.equals("SI")){System.out.println("muy bien! por favor introduce la nueva cadena de texto a consultar:");
cadena2 = Escaner.nextLine();
System.out.println("Ok " + nombre + "! este es el detalle de la nueva cadena de texto que has escrito: \n");
for(int i=0; i<cadena2.length(); i++)
{System.out.println("Caracter :"+ (i+1) + " " + cadena2.substring(i,(i+1)));}
System.out.println("\nGracias por consultar cadenas de texto, espero que te aya sido de utilidad, feliz resto del dia " + nombre + "\nHasta la próxima! \n;)");}
if(siNo.equals("no") || siNo.equals("No") || siNo.equals("NO"))
{ System.out.println("Ok, como prefieras, gracias por consultar cadenas de texto, espero que te aya sido de utilidad, feliz resto del día " + nombre + "\nHasta la próxima!");}
}
}
para futuros códigos tendré en cuenta declarar variables nuevas solo si son realmente necesarias, y usar las ya declaradas al máximo para obtener un código mas limpio.
muchas gracias César!
-
Has captado la idea, ahora mucho mejor ;)