Autor Tema: Método equals en Java. Diferencia entre igualdad e identidad. Ejemplo CU00662B  (Leído 3127 veces)

Alber

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Aqui dejo el código del ejercicio de este tema CU00662B del curso práctico de programación orientada a objetos con Java. No es exactamente lo que pide el ejercicio porque he intentado resolverlo creando una clase EntradaTeclado y una clase main TestComparador donde poder ver cómo funcionan diferentes metodos.

Código:

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

public class EntradaTeclado{
    private String texto;
    public EntradaTeclado(){
        texto="";
        pedirEntrada();
    }
    public void pedirEntrada(){
        Scanner entradaEscaner=new Scanner(System.in);
        texto=entradaEscaner.nextLine();
    }
    public String getEntrada(){return texto;}
    public String getCaracteres(){
        for(int i=0;i<texto.length();i++){
            System.out.println("letra"+(i+1)+":"+texto.substring(i,i+1));
        }
        return (" ");
    }
    public int getLongitud(){
        return texto.length();
    }
   
    }
Código: [Seleccionar]
public class TestComparador{
   
    public static void main(String[]args){
        System.out.println("Empezamos el programa");
        System.out.println("Por favor,introduzca primer texto");
        EntradaTeclado entrada1=new EntradaTeclado();
        System.out.println("Por favor,introduzca segundo texto");
        EntradaTeclado entrada2=new EntradaTeclado();
        System.out.println("Gracias");
        System.out.println("El primer texto ha sido " +entrada1.getEntrada()+ " y consta de " +entrada1.getLongitud()+ " caracteres");
        System.out.println("El segundo texto ha sido " +entrada2.getEntrada()+ " y consta de " +entrada2.getLongitud()+ " caracteres");
        System.out.println(entrada1.getCaracteres());
        System.out.println(entrada2.getCaracteres());
        System.out.println("Comparacion:");
        for(int i=0; i<entrada1.getLongitud()||i<entrada2.getLongitud();i++){
            System.out.print("¿caracter "+(i+1)+ " es igual en los dos textos?: ");
            if(i+1>entrada2.getLongitud()){
                System.out.println("texto 2 no tiene "+(i+1)+" caracter");
            }
            else if(i+1>entrada1.getLongitud()){
                System.out.println("texto 1 no tiene "+(i+1)+" caracter");
            }
            else{
                if((entrada1.getEntrada()).substring(i,i+1).equals((entrada2.getEntrada()).substring(i,i+1))){
                    System.out.println(true);
                }
                else{
                    System.out.println(false);
                }
            }
        }
    }
}
« Última modificación: 29 de Julio 2017, 19:32 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas Alber.

Tu solución es muy buena, quizás usas una forma más enrevesada de resolverlo para alguien que realiza un curso donde se aprende desde cero como su nombre indica.

Y me refiero a esta línea:
Código: [Seleccionar]
for(int i=0; i<entrada1.getLongitud()||i<entrada2.getLongitud();i++){
Para los que no entiendan bien esta línea, en realidad actúa como cualquier condición que introducimos en un if,  el bucle se ejecutará tantas veces como número de caracteres contenga la entrada mas grande.

Saludos. ;D


DanyFlow

  • Sin experiencia
  • *
  • Mensajes: 1
  • Estudiante de Ingenieria en Computacion
    • Ver Perfil
aqui dejo otra solucion  :P
codigo:

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

public class ComparadorLetras {
    public static void main (String[] args) {
        int longitud;
        int j = 1;
        int menor;
        Scanner capt = new Scanner(System.in);
        System.out.println("Escriba dos cadenas: \nPrimera cadena:");
        String texto1 = capt.nextLine();
        System.out.println("Segunda cadena: ");
        String texto2 = capt.nextLine();
        System.out.println("");

        if (texto1.length() > texto2.length()) {   //establece la longitud de la cadena mayor para usarla como rango del for
            longitud = texto1.length();
            menor = 2;
        }
        else {longitud = texto2.length();
            menor = 1;

        }

        for (int i=0; i <= longitud-1;i++) {
            try {
                System.out.println("Letra no. " + i + " igual en 2 palabras ----> " + texto1.substring(i,j).equals(texto2.substring(i,j)));
                j = j + 1;
            } catch (Exception e) {//establece si existe un error imprima el siguiente texto
                System.out.println("La palabra " + menor + " no tiene letra " + (i+1));

            }

        }

    }

}


« Última modificación: 17 de Octubre 2017, 01:41 por DanyFlow »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola DanyFlow, tu código funciona correctamente, pero usas elementos como try catch que aún no han sido explicados dentro del programa del curso.

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