Autor Tema: Ejercicio: CU00662B del tema: El método equals en Java.  (Leído 4393 veces)

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Ejercicio: CU00662B del tema: El método equals en Java.
« en: 28 de Octubre 2014, 20:09 »
Hola comunidad.
Esta fue la solución que pude darle al ejercicio de este tema. Fue la manera como pude solucionar, cualquier sugerencia estaría dispuesto a leerla y aprender mas de ustedes.
aquí mi solución al ejercicio:
Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class TestComparacionLetra here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class TestComparacionLetra{
   
    public TestComparacionLetra(){
    }
   
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
       
        System.out.print("Primera palabra: ");
        String p1 = sc.nextLine();
        System.out.print("Segunda palabra: ");
        String p2 = sc.nextLine();
       
        if(p1.length() >= p2.length()){
            int aux = 0;
           
            while(aux < p2.length()){
               if(p1.substring(aux, aux+1).equals(p2.substring(aux, aux+1))){
                    System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: True");
               }else{
                    System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: False");
               }
               aux++;
            }
           
            while(aux < p1.length()){
            System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: La palabra 2 no tiene letra " + (aux+1));
            aux++;
           }
        }else{
            int aux = 0;
           
            while(aux < p1.length()){
               if(p1.substring(aux, aux+1).equals(p2.substring(aux, aux+1))){
                    System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: True");
               }else{
                    System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: False");
               }
               aux++;
            }
           
            while(aux < p2.length()){
            System.out.println("¿Letra " + (aux+1) + " es igual en las dos palabras?: La palabra 1 no tiene letra " + (aux+1));
            aux++;
           }
        }
    }
}

El ejemplo que colocan muestra que la primera palabra a ingresar es: avispa y la segunda es: ave. Quiere decir que la palabra 1 tiene mayor longitud que la palabra 2. Ahora, y si la palabra 2 tiene mayor longitud como seria? Bueno, yo también le di solución a eso. No se si el ejercicio lo pide, pero quise hacerlo que el usuario ingrese las cadenas de la longitud que desee en cualquiera de las dos. Espero y me este haciendo entender. jejeje.. Es que de pronto a su parecer pueden encontrar unos if de mas y me quise tomar el trabajo de explicar esa parte jeje.. Aquí les dejare una muestra de la prueba de escritorio, dándome a entender un poco mas acerca de esto:


Primera palabra: avispa
Segunda palabra: ave
¿Letra 1 es igual en las dos palabras?: True
¿Letra 2 es igual en las dos palabras?: True
¿Letra 3 es igual en las dos palabras?: False
¿Letra 4 es igual en las dos palabras?: La palabra 2 no tiene letra 4
¿Letra 5 es igual en las dos palabras?: La palabra 2 no tiene letra 5
¿Letra 6 es igual en las dos palabras?: La palabra 2 no tiene letra 6
Primera palabra: ave
Segunda palabra: avispa
¿Letra 1 es igual en las dos palabras?: True
¿Letra 2 es igual en las dos palabras?: True
¿Letra 3 es igual en las dos palabras?: False
¿Letra 4 es igual en las dos palabras?: La palabra 1 no tiene letra 4
¿Letra 5 es igual en las dos palabras?: La palabra 1 no tiene letra 5
¿Letra 6 es igual en las dos palabras?: La palabra 1 no tiene letra 6

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio: CU00662B del tema: El método equals en Java.
« Respuesta #1 en: 28 de Octubre 2014, 23:16 »
Hola Cabanota
Tu ejercicio está bien. Da los mensajes correctos

Está muy bien que prepares tu programa para que tenga en cuenta distintos valores (en este caso la longitud de las palabras).
En definitiva nuestros programas deben hacer eso, intentar dar una respuesta cualquiera que sean los datos que les suministramos.

Ahora lo has solucionado creando código para cada uno de los casos. En este ejercicio eso no implica demasiado código extra.

Con el tiempo llegará un momento en que en lugar de duplicar código, la práctica y la experiencia te permitirá crear código que se adaptará teniendo en cuenta las circunstancias del momento.

Saludos.

underzero

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Re:Ejercicio: CU00662B del tema: El método equals en Java.
« Respuesta #2 en: 16 de Noviembre 2014, 00:35 »
Hola, llevo una semana haciendo el curso de java (ya tenia una base sólida) y acabo de terminar este ejercicio. Así es como lo he hecho a ver que os parece:

Código: [Seleccionar]
import java.util.Scanner;

public class Comparar
{
    private String palabra1;
    private String palabra2;
    private Scanner entrada1;
    private Scanner entrada2;
   
    public static void main(String [ ] Args)
    {
        System.out.println("Introduce palabra 1");
        Scanner entrada1 = new Scanner(System.in);
        String palabra1 = entrada1.nextLine();
        System.out.println("Introduce palabra 2");
        Scanner entrada2 = new Scanner(System.in);
        String palabra2 = entrada1.nextLine();
       
        int i =0; // contador para recorrer la palabra1
        int x =0; // contador para recorrer la palabra2
        while (i < Math.max(palabra1.length(),palabra2.length())) {
         
                if (i>=palabra1.length()) { System.out.println("La palabra1 no tiene letra "+(i+1)); }
                else if (x>=palabra2.length()) { System.out.println("La palabra2 no tiene letra "+(x+1)); }
                else if(palabra1.substring(i,i+1).equals(palabra2.substring(x,x+1))) { System.out.println("La letra "+(i+1)+" igual en la dos palabras true"); }
                else { System.out.println("La letra "+(x+1)+" igual en las dos palabras false");
                }     
                i++;
                x++;   
        }
    }
}

Me parece una forma un poco mas "ligera". Creo que se entiende bastante mejor.  ¿Que opinais?
« Última modificación: 16 de Noviembre 2014, 00:44 por underzero »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio: CU00662B del tema: El método equals en Java.
« Respuesta #3 en: 17 de Noviembre 2014, 15:17 »
Hola undercero
Si, tu código es más ligero, más compacto.
Esa es una de las cosas que se buscan en java. El mínimo código con el resultado adecuado.

Observo que has declarado dos objetos de tipo Scanner a saber: entrada1 y entrada2, pero no los aprovechas los dos.
En el siguiente código convierto en comentario las dos líneas que no hacen falta.
Código: [Seleccionar]
public class Comparar
{
    private String palabra1;
    private String palabra2;
    private Scanner entrada1;
//    private Scanner entrada2;  No hace falta.
   
    public static void main(String [ ] Args)
    {
        System.out.println("Introduce palabra 1");
        Scanner entrada1 = new Scanner(System.in);
        String palabra1 = entrada1.nextLine();
        System.out.println("Introduce palabra 2");
 //       Scanner entrada2 = new Scanner(System.in); No hace falta.
        String palabra2 = entrada1.nextLine();
        ....
    }
}
Muy bien usar la clase Math, para que decida por nosotros cual es la palabra más larga.

Saludos

 

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