Autor Tema: Ejercicio JAVA crear dos códigos distintos que hagan la misma tarea CU00662B  (Leído 2333 veces)

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Hola, aquí les dejo el código que he escrito para este ejercicio CU00662B del curso de fundamentos de programación orientada a objetos.

Me ha quedado un poco más complejo de lo que me gustaría, pero funciona, creo, que bien. Estoy intentado hacerlo usando switch y un sólo metodo aparte al que llamar para escribir los resultados. Por ahora esto es lo que hay  ;D.

Código: [Seleccionar]
import java.util.Scanner;
public class ComparaLetras {
    private String texto1;
    private String texto2;
   
    public static void main (String [] args) {
        System.out.println ("Por favor introduzca la primera palabra");
        Scanner palabra1 = new Scanner (System.in);
        String texto1 = palabra1.nextLine ();
       
        System.out.println ("Por favor introduzca la segunda palabra");
        Scanner palabra2 = new Scanner (System.in);
        String texto2 = palabra2.nextLine ();
       
        int i = 0;
       
        if (texto1.length() < texto2.length()) {
           
            for (i = 0;i < texto1.length();i++) {
               
                 if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
                     System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
                    }
                        else {
                             System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
                            }
                        }
                    System.out.println ("La palabra \"" +texto2 + "\" tiene mas de " + texto1.length() + " letras.");
                   
                }
               
               
                else if (texto1.length() == texto2.length()) {
                    for (i = 0;i < texto2.length();i++) {
                 if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
                     System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
                    }
                        else {
                             System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
                           
                            }
                        }
                    }
                       
                   else {
                   
                    for (i = 0;i < texto2.length();i++) {
               
                 if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
                     System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
                    }
                        else {
                             System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
                            }
                        }
                       
                    System.out.println ("La palabra \"" +texto1 + "\" tiene mas de " + texto2.length() + " letras.");
                    }
                }
            }
Gracias como siempre por vuestro interés. No sé si se esperaba obtener el true o false por algún método getter... me pareció más fácil así.
« Última modificación: 29 de Diciembre 2016, 17:14 por Alex Rodríguez »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ejercicio JAVA CU00662B
« Respuesta #1 en: 23 de Diciembre 2016, 06:31 »
Buenos días.
El ejercicio es correcto.

Otra forma de hacerlo podría ser:
Código: [Seleccionar]
import java.util.Scanner;
public class Comparador1{

    public static void main(String[] args){
        Scanner entradaScanner= new Scanner(System.in);             
        System.out.print("Introdusca la primera cadena: ");       
        String cadena1= entradaScanner.nextLine();
        System.out.print("Introdusca la segunda cadena: ");
        String cadena2= entradaScanner.nextLine();
        System.out.println("Se recibe \"" + cadena1 + "\" y \"" + cadena2 + "\".");
        System.out.println("Comparacion:\n");       
        boolean comparacion=true;
        String cadena="1";     
        for(int i= 0; i < cadena1.length() || i < cadena2.length(); i++){           
            System.out.print("¿Caracter "+(i+1)+" igual en ambos?: ");
            if(i+1 <= cadena2.length() && i+1 <= cadena1.length()){               
                if(!cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1))){comparacion=false;}
                System.out.println(comparacion);
            }else{
                if(i+1 > cadena2.length()){cadena="2";}
                System.out.println("Cadena "+cadena+" no tiene "+(i+1)+" cáracter.");}
        }
    }
}

En los siguientes enlaces tienes más formas de hacerlo:
https://www.aprenderaprogramar.com/foros/index.php?topic=5691.msg22217#msg22217
https://www.aprenderaprogramar.com/foros/index.php?topic=5683.msg22185#msg22185
Un saludo

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Ejercicio JAVA CU00662B
« Respuesta #2 en: 23 de Diciembre 2016, 10:15 »
Gracias por tu rápida y útil respuesta. Tu código es más bonito y se paraece a lo que pensaba que se podía hacer. No se me habría ocurrido usar comparadores en la sentencia for, buen detalle.

 

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