Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: guillemolero en 08 de Agosto 2015, 09:49
-
Hola a todos.
Pongo aquí el código del ejercicio resuelto de la entrega 62 del curso.
Lo he comprobado con palabras de distinto e igual tamaño y parece que funciona correctamente. Espero corrección alguna :3.
Muchas gracias :D
import java.util.Scanner;
public class Ejercicio
{
public static void main(String [] args)
{
String entrada1 = "";
String entrada2 = "";
System.out.println("Introduce la primera palabra:");
Scanner scanner1 = new Scanner(System.in);
entrada1 = scanner1.nextLine();
System.out.println("Introduce la segunda palabra:");
Scanner scanner2 = new Scanner(System.in);
entrada2 = scanner2.nextLine();
int k = 0;
while (entrada1.length() > k || entrada2.length() > k)
{
k+=1;
System.out.println("¿Letra " +k+ " igual en las dos palabras?");
if(entrada1.length() >=k && entrada2.length() >= k)
{
if(entrada1.substring(k-1,k).equals(entrada2.substring(k-1,k)))
{
System.out.println("Si");
}
else
{
System.out.println("No");
}
}
else if (entrada1.length() < k)
{
System.out.println("La primera palabra no tiene letra " + k);
}
else if (entrada2.length() < k)
{
System.out.println("La segunda palabra no tiene letra " + k);
}
else
{
break;
}
}
}
}
-
Hola Guille!
Primeramente he de darte la bienvenida al foro ya que veo que es tu primera publicación, bienvenido!
Analizando tu ejercicio veo que lo has hecho muy bien, felicitaciones por ello.
Lo único para observar que tengo por mi parte es respecto a la utilización de la sentencia 'break' que empleas para salir del bucle while.
Si bien es válida la utilización de 'break' siempre trataremos de eviarla, diseñando los bucles de tal manera que nuestra salida del while sea más limpia, es decir: cuando la condición impuesta en while deja de cumplirse.
En este caso particular de tu ejercicio, la utilización del break no era necesaria. Reescribo el código eliminando el último 'else' (y convietiendo el último 'else if' en 'else').
import java.util.Scanner;
public class Ejercicio
{
public static void main(String [] args)
{
String entrada1 = "";
String entrada2 = "";
System.out.println("Introduce la primera palabra:");
Scanner scanner1 = new Scanner(System.in);
entrada1 = scanner1.nextLine();
System.out.println("Introduce la segunda palabra:");
Scanner scanner2 = new Scanner(System.in);
entrada2 = scanner2.nextLine();
int k = 0;
while (entrada1.length() > k || entrada2.length() > k)
{
k+=1;
System.out.println("¿Letra " +k+ " igual en las dos palabras?");
if(entrada1.length() >=k && entrada2.length() >= k)
{
if(entrada1.substring(k-1,k).equals(entrada2.substring(k-1,k)))
{
System.out.println("Si");
}
else
{
System.out.println("No");
}
}
else if (entrada1.length() < k)
{
System.out.println("La primera palabra no tiene letra " + k);
}
else
{
System.out.println("La segunda palabra no tiene letra " + k);
}
}
}
}
Analízalo y cualquier duda estamos aquí para volverlo a revisar.
-
Ya entiendo ¡Tienes toda la razón!
Gracias por el recibimiento. Voy a corregir el código ahora mismo. Y ya que estoy... Una pregunta: ¿Por qué está tan mal visto el uso de break en programación?
Siempre he tenido esa curiosidad :P
Un saludo.
-
Hola Guille:
Bueno, para responder a tu pregunta con solidéz argumental y espaldas para sostener lo dicho creo que deberíamos invocar a alguien con más estrellas y galardones en su uniforme que las que luzco yo. ;D
Hasta que eso suceda me arriesgaría a decir que el uso de la sentencia break cuando el bucle puede ser resuelto sin él, evidencia un pobre diseño.
De todos modos no creo que se trate de un mero hecho estético evitar el break, sino que pienso podría estar relacionado con cuestiones de diseño de estructura y solidez.
Igualmente convengamos también que el uso del break no es un error, de hecho forma parte del set de sentencias de Java.
-
Hola, sin estrellas ni galardones ;), el uso de instrucciones que crean disrupciones en el flujo natural de programas se consideran inadecuadas por generar estructuras de código de diseño pobre y difícil seguimiento. Un bucle while tiene una puerta natural para entrar o salir (la condición). Salir con un break es como salir por la ventana, puedes hacerlo, pero no es lo más adecuado.
Para quien quiera leer más: Modificación directa del flujo de programas: entregas CU00177A a CU00183A del curso de Bases de la programación http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59
Saludos
-
Muchas gracias Alex.
Y excelente el aporte del material para consultar. Saludos.
-
Ya veo.
Muchísimas gracias a ambos y ¡perdón por las molestias!
Seguiré con el curso a ver si lo termino con éxito :D. Un saludo.