Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Alber en 12 de Julio 2017, 21:02

Título: Método equals en Java. Diferencia entre igualdad e identidad. Ejemplo CU00662B
Publicado por: Alber en 12 de Julio 2017, 21:02
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);
                }
            }
        }
    }
}
Título: Re:El método equals en Java. Diferencia entre igualdad e identidad.Ejemp(CUOO662B)
Publicado por: pedro,, en 22 de Julio 2017, 19:11
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

Título: Re:Método equals en Java. Diferencia entre igualdad e identidad. Ejemplo CU00662B
Publicado por: DanyFlow en 17 de Octubre 2017, 01:37
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));

            }

        }

    }

}


Título: Re:Método equals en Java. Diferencia entre igualdad e identidad. Ejemplo CU00662B
Publicado por: Alex Rodríguez en 16 de Diciembre 2017, 12:45
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.