Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 29 de Marzo 2017, 22:33

Título: Java. Método equals para comparar Strings comparar palabras en BlueJ CU00662B
Publicado por: Luis Fdo Carvajal en 29 de Marzo 2017, 22:33
Respuesta a Pensar en objetos. Una entrada de teclado o consola en Java como objeto con campos y métodos. (CU00661B)

Crea una clase en cuyo método main ejecutes una comparación letra a letra usando equals de dos palabras usando bucles. Por ejemplo si las palabras son “avispa” y “ave” el programa debe dar como resultado: ¿Letra 1 igual en las dos palabras? True. ¿Letra 2 igual en las dos palabras? True ¿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 ¿Letra 6 igual en las dos palabras? La palabra 2 no tiene letra 6.

Código: [Seleccionar]
import java.util.Scanner;
/**
 *
 * @author ITCO1724
 */
public class TestEntradaDeTeclado {
    public static void main (String [ ] args) {
   
     
        System.out.println ("Empezamos el programa");     
        System.out.println ("Por favor introduzca la entrada 1:");
       
        String cadena1="";
        Scanner x = new Scanner (System.in); //Creación de un objeto Scanner
           cadena1 = x.nextLine (); //Invocamos un método sobre un objeto Scanner
           

     
        System.out.println ("Por favor introduzca la entrada 2:");
       
        String cadena2="";
        Scanner y = new Scanner (System.in); //Creación de un objeto Scanner
           cadena2 = y.nextLine (); //Invocamos un método sobre un objeto Scanner
           

       
        int i = 0;
        try {
        for (i=0;i<= cadena1.length(); i++ ) {
            if (cadena1.substring(i,i+1).equalsIgnoreCase(cadena2.substring(i,i+1))){
                System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? True");
               
            }
            else {
               
                System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? False"); }
           
        }
        }
        catch (Exception e) {
       
       
        }

    } //Cierre del main
} //Cierre de la clase
Título: Java. Método equals para comparar Strings. CU00662B
Publicado por: Luis Fdo Carvajal en 30 de Marzo 2017, 15:47
Bueno, revisando encontré que me faltó parte de lo exigido en el ejercicio. Acá lo agrego.
Código: [Seleccionar]
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
import java.util.Scanner;
/**
 *
 * @author ITCO1724
 */
public class TestEntradaDeTeclado {
    public static void main (String [ ] args) {
   
     
        System.out.println ("Empezamos el programa");     
        System.out.println ("Por favor introduzca la entrada 1:");
       
       
        String cadena1="";
        Scanner x = new Scanner (System.in); //Creación de un objeto Scanner
        cadena1 = x.nextLine (); //Invocamos un método sobre un objeto Scanner
       
           

     
        System.out.println ("Por favor introduzca la entrada 2:");
       
        String cadena2="";
        Scanner y = new Scanner (System.in); //Creación de un objeto Scanner
        cadena2 = y.nextLine (); //Invocamos un método sobre un objeto Scanner
       
        // determinar cuál string tiene mayor longitud de caracteres
        String cadena="";
   
        if ( cadena1.length()>cadena2.length()){
            cadena = cadena1;
        }
        else {
            cadena = cadena2;
        }
           

       
        int i = 0;
        int j = 0;
        try {
        for (i=0;i<= cadena.length(); i++ ) {
            //while (i<cadena.length()) {
            if (cadena1.substring(i,i+1).equalsIgnoreCase(cadena2.substring(i,i+1))){
                System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? True");
               
            }
            else {
               
                System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? False");}
        }
       
       
      }
        catch (Exception e) {
     
        }
        for (j=0;(i+j)<= cadena.length(); j++ ){
            System.out.println ("¿Letra " + (i+j) + " igual en las dos palabras? La segunda entrada no tiene letra " + (i+j));
        }
    }//Cierre del main

    }  //Cierre de la clase

Título: Re:EJERCICIO CU00661B
Publicado por: pedro,, en 03 de Abril 2017, 00:24
Hola Luis Fdo.

En el curso no se han explicado los bloques try catch, y este ejercicio se puede resolver con lo aprendido en el curso sin necesidad de usarlos, así que si quieres, lo ideal es que presentases una solución de acuerdo a lo estudiado en el curso.De la forma en que resuelves el ejercicio es intentando deshacerte de un error usando try catch, un error que puedes solucionar fácilmente resolviendo el ejercicio adecuadamente, try catch se debe usar cuando puedan ocurrir errores que no pudiésemos controlar de otra forma. Te dejo un enlace con una posible solución al ejercicio:

https://www.aprenderaprogramar.com/foros/index.php?topic=2089.msg10280#msg10280

Saludos. ;D
Título: Re:Java. Método equals para comparar Strings. CU00662B
Publicado por: david82 en 12 de Mayo 2017, 19:06
Hola

Tengo una duda respecto a este bloque de código:
Código: [Seleccionar]
public String getPrimeraPalabra ()  {

       //IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO == POR ESO ESTO NO FUNCIONARÁ       

          if (entradaTeclado.substring(0,1)=="j") {

          System.out.println ("Hemos detectado una j");

          } else { System.out.println ("Mira esto:" + entradaTeclado.substring(0,1) ); } 

        /*for (int i=0; i < entradaTeclado.length() - 1; i++) {

            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS

                return entradaTeclado.substring(0, i+1);         }

        }*/

        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya

    } //Cierre del método getPrimeraPalabra

Compila y corre sin problemas, pero jamás entra al bloque del if sin importar que la cadena solo contenga "j". Podrías aclararme por qué sucede eso? (Haciendo enfasis en que en el comentario del código dices que no funcionaría). Gracias.
Título: Re:Java. Método equals para comparar Strings. CU00662B
Publicado por: pedro,, en 14 de Mayo 2017, 02:00
Buenas.

El problema es que no se pueden comparar dos String usando "==", para ello puedes usar el método equals() o equalsIgnoreCase().
Código: [Seleccionar]
public String getPrimeraPalabra ()  {

       //IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO == POR ESO ESTO NO FUNCIONARÁ       

          if (entradaTeclado.substring(0,1).equals("j")) {

          System.out.println ("Hemos detectado una j");

          } else { System.out.println ("Mira esto:" + entradaTeclado.substring(0,1) ); } 

        /*for (int i=0; i < entradaTeclado.length() - 1; i++) {

            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS

                return entradaTeclado.substring(0, i+1);         }

        }*/

        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya

    } //Cierre del método getPrimeraPalabra

Saludos. ;D
Título: Re:Java. Método equals para comparar Strings. CU00662B
Publicado por: david82 en 15 de Mayo 2017, 15:57
Bien, ya aclaraste mi duda.

Muchas gracias 8)