Autor Tema: método equals java comparar objetos diferencia igualdad identidad ej. CU00662B  (Leído 2958 veces)

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Solución propuesta para el ejercicio CU00662B del tutorial pdf de programación Java desde cero de aprenderaprogramar.

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

public class CadenaComparar {
private String entrada;

public static void main(String[] args) {
System.out.println("Ingrese primera palabra");
CadenaComparar entrada1 = new CadenaComparar();

System.out.println("Ingrese segunda palabra");
CadenaComparar entrada2 = new CadenaComparar();

Comparacion(entrada1.getEntrada(), entrada2.getEntrada());
}

public CadenaComparar() {
pedirEntrada();
}

public void pedirEntrada() {
Scanner entradaTeclado1 = new Scanner(System.in);
setEntrada(entradaTeclado1.nextLine());
}

public static void Comparacion(String pEntrada1, String pEntrada2) {
int maxI, minI, numEntrada, i = 0;

if (pEntrada1.length() > pEntrada2.length()) {
maxI = pEntrada1.length();
minI = pEntrada2.length();
numEntrada = 2;
} else {
maxI = pEntrada2.length();
minI = pEntrada1.length();
numEntrada = 1;
}

while (i < maxI) {
if (i < minI && pEntrada1.substring(i, i + 1).equals(pEntrada2.substring(i, i + 1))) {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? True.");
} else if (i < minI) {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? False.");
} else {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? La palabra " + numEntrada
+ " no tiene letra " + (i + 1));
}
i += 1;
}
}

public String getEntrada() {
return entrada;
}

public void setEntrada(String entrada) {
this.entrada = entrada;
}
}
« Última modificación: 09 de Octubre 2020, 14:20 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
El ejercicio muestra el resultado como pide pero se podría mejorar.

La comparación con equals te da luego como resultado false o true dependiendo si es idéntico o no. En vez de imprimir

 
Código: [Seleccionar]
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? True.");

directamente podias hacer así

Código: [Seleccionar]
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (pEntrada1.substring(i, i + 1).equals(pEntrada2.substring(i, i + 1))));
Así el código sería más compacto y usarías menos lineas. Quedaría:

Código: [Seleccionar]
while (i < maxI) {
            if (i < minI) {
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (pEntrada1.substring(i, i + 1).equals(pEntrada2.substring(i, i + 1))));
            } else {
                System.out.println("La palabra " + numEntrada + " no tiene letra " + (i + 1));
            }
            i += 1;
        }

Aunque podías usar for también pero ya eso es opcional.

Otra cosa: es recomendable dividir en clases y no poner todo dentro de la clase principal main ya que dentro del principal si es posible no tiene que ir nada calculado.

Ejemplo: podías crear una clase GestionarEntradaTeclado que se encargaría de gestionar el teclado y otra clase que se encargaría sobre gestionar la comparación del los ingresados.
« Última modificación: 09 de Octubre 2020, 14:22 por Alex Rodríguez »

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
Gracias las observaciones, he hecho los cambios tratando de cumplir lo recomendado

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

public class CadenaComparar {


public static void main(String[] args) {
System.out.println("Ingrese primera palabra");
GestionarEntrada entrada1 = new GestionarEntrada();

System.out.println("Ingrese segunda palabra");
GestionarEntrada entrada2 = new GestionarEntrada();

RealizaComparacion.Comparacion(entrada1.getEntrada(), entrada2.getEntrada());
}
}

Código: [Seleccionar]
package com.aprenderaprogramar;

import java.util.Scanner;

public class GestionarEntrada {
private String entrada;

public GestionarEntrada() {
pedirEntrada();
getEntrada();
}

public void pedirEntrada() {
Scanner entradaTeclado1 = new Scanner(System.in);
setEntrada(entradaTeclado1.nextLine());
}

public String getEntrada() {
return entrada;
}

public void setEntrada(String entrada) {
this.entrada = entrada;
}
}


Código: [Seleccionar]
package com.aprenderaprogramar;

public class RealizaComparacion {

public RealizaComparacion() {
}

public static void Comparacion(String pEntrada1, String pEntrada2) {
int maxI, minI, numEntrada, i = 0;

if (pEntrada1.length() > pEntrada2.length()) {
maxI = pEntrada1.length();
minI = pEntrada2.length();
numEntrada = 2;
} else {
maxI = pEntrada2.length();
minI = pEntrada1.length();
numEntrada = 1;
}

while (i < maxI) {
if (i < minI ) {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (pEntrada1.substring(i, i + 1).equals(pEntrada2.substring(i, i + 1))));
} else {
System.out.println("La palabra " + numEntrada + " no tiene letra " + (i + 1));
}
i += 1;
}
}
}


 

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