Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: maxplanck en 22 de Diciembre 2016, 22:00

Título: Ejercicio JAVA crear dos códigos distintos que hagan la misma tarea CU00662B
Publicado por: maxplanck en 22 de Diciembre 2016, 22:00
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í.
Título: Re:Ejercicio JAVA CU00662B
Publicado por: ESOJ 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=5691.msg22217#msg22217)
https://www.aprenderaprogramar.com/foros/index.php?topic=5683.msg22185#msg22185 (https://www.aprenderaprogramar.com/foros/index.php?topic=5683.msg22185#msg22185)
Un saludo
Título: Re:Ejercicio JAVA CU00662B
Publicado por: maxplanck 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.