Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Amateu en 11 de Abril 2016, 13:17

Título: Java uso de operador '==' no es correcto usarlo con objetos tipo String CU00657B
Publicado por: Amateu en 11 de Abril 2016, 13:17
Paso el código del ejercicio CU00657B del tutorial básico de programación en Java:

Código: [Seleccionar]
/**
 * De la lección CU00657B
 *
 * @author amateu
 * @version 11/04/2016
 */
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

public class TestCadena {
       
    public static void main (String [ ] args)
    {
        System.out.println ("Vamos a analizar la longitud de la cadena y si empieza por a");
        System.out.println ("Por favor introduzca una cadena por teclado:");
        String entradaTeclado = "";
        String longitud = "";
        String sinlaa = "";
        Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
        if (entradaTeclado.length() < 5)
            {
            longitud = "menos de 5 ";
            } else
                { if (entradaTeclado.length() <= 15)
                    {
                        longitud = "entre 5 y 15 ";
                    } else { longitud = "más de 15 ";}
                }                   
        String letrainicial = entradaTeclado.substring(0,1);
        if (letrainicial.equals("a")) //Se ha introducion el método equals porque con == no funciona
            {
              sinlaa = "";
            } else { sinlaa = "no ";}
        System.out.println ("La cadena introducida tiene " + longitud +"caracteres y "
            + sinlaa + "comienza por a.");
    }//Cierre del main
} //Cierre de la clase

La verdad es que me he vuelto un poco loco con no poder utilizar == con los strings, y no lo acabo de entender muy bien.
Gracias.
Título: Re:Pedir datos de java por consola. Ejercicio CU00657B.
Publicado por: RaGa en 12 de Abril 2016, 03:07
Hola Amateu:

Estuve revisando tu ejercicio y lo veo perfecto! Cumple con lo que pide el ejercicio.

Respecto al uso del operador '==' no es correcto usarlo con los objetos tipo String. Para comprobar igualdad de un objeto tipo String se debe usar el método 'equals' de la clase Object (a la cual pertenecen todos los objetos, incluídos los tipo String).

Ejemplo: Podemos incluír un condicional if más en tu código de la siguiente manera:

Código: [Seleccionar]
....
....
Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
       
        if(entradaTeclado.equals("java")){
            System.out.println("La palabra ingresada es 'java'");
        }
       
        if (entradaTeclado.length() < 5)
            {
            longitud = "menos de 5 ";
....
....

Lo que haría este agregado es que si la palabra ingresada es "java" nos lo indicará por consola. Si no lo fuese, no habrá ninguna indicación.

Analízalo y cualquier duda estamos aquí para reveerlo.