Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Alberto06 en 09 de Abril 2015, 21:50
-
Hola.
Este ejercicio me costo mucho, pero creo que lo logre. Les envio mi codigo para que me indiquen mis errores. Muchas gracias.
import java.util.Scanner;
public class Comparacion2 {
public static void main (String [] args) {
String ingresoTeclado1 = "";
String ingresoTeclado2 = "";
System.out.println("Ingresa la 1ra palabra");
Scanner inScanner = new Scanner(System.in);
ingresoTeclado1 = inScanner.nextLine();
System.out.println ("Ingresa la 2da palabra");
Scanner inScanner2 = new Scanner(System.in);
ingresoTeclado2 = inScanner2.nextLine();
System.out.println ("Gracias");
if (ingresoTeclado1.length() > ingresoTeclado2.length()) {
for (int i = 0; i < ingresoTeclado2.length(); i++) {
if (ingresoTeclado1.substring(i, i+1).equals(ingresoTeclado2.substring(i, i+1))) {
System.out.println(" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
else {
System.out.println (" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
}
for (int i = (ingresoTeclado2.length()); i < ingresoTeclado1.length(); i++) {
System.out.println (" La 2da palabra no tiene la letra numero: " + (i + 1) );
}
}
else if (ingresoTeclado1.length() < ingresoTeclado2.length()) {
for (int i = 0; i < ingresoTeclado1.length(); i++) {
if (ingresoTeclado1.substring(i, i+1).equals(ingresoTeclado2.substring(i, i+1))) {
System.out.println(" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
else {
System.out.println (" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
}
for (int i = (ingresoTeclado1.length()); i < ingresoTeclado2.length(); i++) {
System.out.println (" La 1ra palabra no tiene la letra numero: " + (i + 1) );
}
}
else {
for (int i = 0; i < ingresoTeclado1.length() ; i++) {
if (ingresoTeclado1.substring(i, i+1).equals(ingresoTeclado2.substring(i, i+1))) {
System.out.println (" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
else {
System.out.println (" La letra numero: " + (i + 1) + " es la misma en ambas palabras? " + ingresoTeclado1.substring (i, i+1).equals(ingresoTeclado2.substring(i, i+1)));
}
}
}
System.out.println (" Ejercicio terminado");
}
}
-
Hola en primer lugar felicitarte por haber resuelto el ejercicio, que es un tanto complejo. Si tienes interés en mejorar las cosas mejorables son:
- Hay repetición de código en tu solución. La repetición de código debe evitarse. Esto es una cuestión de diseño del código, no es fácil hacer buenos diseños. Normalmente las personas que saben hacer buenos diseños es porque han practicado mucho y consultado diseños que hacen otras personas y con el tiempo han ido aprendiendo a realizar buenos diseños. Te recomiendo que consultes esta solución propuesta https://www.aprenderaprogramar.com/foros/index.php?topic=2089 y la compares con la tuya. Seguidamente deberías "reformar" tu código por tí mismo tratando de hacerlo más compacto y evitar la repetición.
- Sería aconsejable que para practicar te acostumbres a ir trabajando con programas donde intervenga más de una clase. Por ejemplo aquí podrías haber usado una clase como EntradaDeTeclado.
Saludos