Autor Tema: EJERCICIO CU00658B comparar cadenas con equals java  (Leído 4012 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
EJERCICIO CU00658B comparar cadenas con equals java
« en: 06 de Julio 2014, 02:22 »
Código: [Seleccionar]
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!
« Última modificación: 31 de Agosto 2014, 19:09 por Alex Rodríguez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:EJERCICIO CU00658B
« Respuesta #1 en: 06 de Julio 2014, 16:38 »
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

Responsable de departamento de producción aprenderaprogramar.com

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:EJERCICIO CU00658B Codigo replanteado
« Respuesta #2 en: 06 de Julio 2014, 20:39 »
 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.

Código: [Seleccionar]
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!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:EJERCICIO CU00658B
« Respuesta #3 en: 06 de Julio 2014, 23:21 »
Has captado la idea, ahora mucho mejor  ;)
Responsable de departamento de producción aprenderaprogramar.com

 

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