Autor Tema: Java ejemplo programa pide dos palabras y las compara Ejercicio CU00662B  (Leído 4693 veces)

javalopez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Buenas tardes, aqui les pego mi código del ejercicio!

Código: [Seleccionar]
import java.util.Scanner;
public class ComparaLetrasCadenas{

    public static void main (String[] Args){

        System.out.println ("Por favor introduzca la primera cadena por teclado:");
        Scanner entradaEscaner1 = new Scanner (System.in);
        String entradaTeclado1 = entradaEscaner1.nextLine ();
        System.out.println ("Por favor introduzca la segunda cadena por teclado:");
        Scanner entradaEscaner2 = new Scanner (System.in);
        String entradaTeclado2 = entradaEscaner2.nextLine ();
        int limiteMayor=0;
        int limiteMenor=0;

        if(entradaTeclado1.length()>=entradaTeclado2.length()){ //establecemos los limites del bucle y los fin de cadena
            limiteMayor=entradaTeclado1.length();
            limiteMenor=entradaTeclado2.length();}
        else{
            limiteMayor=entradaTeclado2.length();
            limiteMenor=entradaTeclado1.length();}

        for(int i=1;i<=limiteMayor;i++)//hacemos un bucle
        {
            System.out.println("¿Letra " +i+ " igual en las dos palabras?");
           
            if(i<=limiteMenor){
                System.out.println(entradaTeclado1.substring(i-1,i).equals(entradaTeclado2.substring(i-1,i)));}
            else if(entradaTeclado1.length()<entradaTeclado2.length()){
                System.out.println("La palabra 1 no tiene letra " +i);}
            else if(entradaTeclado1.length()>entradaTeclado2.length()){
                System.out.println("La palabra 2 no tiene letra " +i);}

        }
    }
}

Saludos! Ariel
« Última modificación: 18 de Junio 2015, 15:15 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Ejercicio CU662B
« Respuesta #1 en: 12 de Junio 2015, 01:56 »
Hola estaba probando tu código y encontré errores imprimía hasta el final esta linea
Código: [Seleccionar]
System.out.println("¿Letra " +i+ " igual en las dos palabras?");
como no tiene condición imprime hasta que termine el bucle y la condición que le pasa al if esta mal no hace lo que pide imprime mal.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Ejercicio CU662B
« Respuesta #2 en: 12 de Junio 2015, 01:59 »
Hice alguna modificación en tu código para guiarte un poco espero que te ayude.
Código: [Seleccionar]
import java.util.Scanner;

public class ComparaLetrasCadenas {

    public static void main(String[] args) {
        System.out.println("Por favor introduzca la primera cadena por teclado:");
        Scanner entradaEscaner1 = new Scanner(System.in);
        String entradaTeclado1 = entradaEscaner1.nextLine();
        System.out.println("Por favor introduzca la segunda cadena por teclado:");
        Scanner entradaEscaner2 = new Scanner(System.in);
        String entradaTeclado2 = entradaEscaner2.nextLine();
        int limiteMayor;
        int limiteMenor;
        int palabra;

        if (entradaTeclado1.length() > entradaTeclado2.length()) { //establecemos los limites del bucle y los fin de cadena
            limiteMayor = entradaTeclado1.length();
            limiteMenor = entradaTeclado2.length();
            palabra = 2;

        } else {
            limiteMayor = entradaTeclado2.length();
            limiteMenor = entradaTeclado1.length();
            palabra = 1;
        }

        for (int i = 0; i < limiteMayor; i++)//hacemos un bucle
        {
            // System.out.println("¿Letra " + i + " igual en las dos palabras?");
            if (i < limiteMenor) {
                // System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
                System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (entradaTeclado1.substring(i, i + 1).equals(entradaTeclado2.substring(i, i + 1))));
            } else {
                //System.out.println("La palabra 1 no tiene letra " + i);
                System.out.println("La palabra " + palabra + " no tiene letra " + (i + 1));
            } /*else if (entradaTeclado1.length() > entradaTeclado2.length()) {
             System.out.println("La palabra 2 no tiene letra " + i);
             }*/

        }
    }
}

no borre deje en comentario nomas para mirar y hacer comparación

javalopez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:Ejercicio CU662B
« Respuesta #3 en: 12 de Junio 2015, 02:07 »
Hola Dranx, ese código lo corrí en mi BlueJ y funciona bien, aquí te mando la muestra que me arroja por consola.

Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
¿Letra 4 igual en las dos palabras?
La palabra 2 no tiene letra 4
¿Letra 5 igual en las dos palabras?
La palabra 2 no tiene letra 5

Dime que palabras utilizaste para hacer la misma prueba que vos para ver si a mi me da el mismo error.

Gracias por la modificación!

Ariel

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Ejercicio CU662B
« Respuesta #4 en: 12 de Junio 2015, 02:54 »
mirando lo que te imprimió te voy a mostrar el error.
Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
¿Letra 4 igual en las dos palabras?Este ya no tiene que imprimir mas
La palabra 2 no tiene letra 4
¿Letra 5 igual en las dos palabras?Este ya no tiene que imprimir mas
La palabra 2 no tiene letra 5

tiene que quedar asi mas o menos
Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
La palabra 2 no tiene letra 4
La palabra 2 no tiene letra 5

Y La solución probando ahora pille solo tenes que poner
Código: [Seleccionar]
System.out.println("¿Letra " + i + " igual en las dos palabras?");dentro de tu condición if vos estaba imprimiendo dentro de tu for y entonce imprime hasta que termine el for. El código quedaría así sin mucha modificación solo donde esta la condición.
Código: [Seleccionar]
for (int i = 1; i <= limiteMayor; i++)//hacemos un bucle
        {

            if (i <= limiteMenor) {
                System.out.println("¿Letra " + i + " igual en las dos palabras?");
                System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
            } else if (entradaTeclado1.length() < entradaTeclado2.length()) {
                System.out.println("La palabra 1 no tiene letra " + i);
            } else if (entradaTeclado1.length() > entradaTeclado2.length()) {
                System.out.println("La palabra 2 no tiene letra " + i);
            }

        }

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Ejercicio CU662B
« Respuesta #5 en: 12 de Junio 2015, 02:55 »
El código completo agarrando tu código.
Código: [Seleccionar]
public class ComparaLetrasCadenas2 {

    public static void main(String[] Args) {

        System.out.println("Por favor introduzca la primera cadena por teclado:");
        Scanner entradaEscaner1 = new Scanner(System.in);
        String entradaTeclado1 = entradaEscaner1.nextLine();
        System.out.println("Por favor introduzca la segunda cadena por teclado:");
        Scanner entradaEscaner2 = new Scanner(System.in);
        String entradaTeclado2 = entradaEscaner2.nextLine();
        int limiteMayor = 0;
        int limiteMenor = 0;

        if (entradaTeclado1.length() >= entradaTeclado2.length()) { //establecemos los limites del bucle y los fin de cadena
            limiteMayor = entradaTeclado1.length();
            limiteMenor = entradaTeclado2.length();
        } else {
            limiteMayor = entradaTeclado2.length();
            limiteMenor = entradaTeclado1.length();
        }

        for (int i = 1; i <= limiteMayor; i++)//hacemos un bucle
        {

            if (i <= limiteMenor) {
                System.out.println("¿Letra " + i + " igual en las dos palabras?");
                System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
            } else if (entradaTeclado1.length() < entradaTeclado2.length()) {
                System.out.println("La palabra 1 no tiene letra " + i);
            } else if (entradaTeclado1.length() > entradaTeclado2.length()) {
                System.out.println("La palabra 2 no tiene letra " + i);
            }

        }
    }
}

 

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