Problema con comparación de cadenas

Iniciado por Debci, 24 Agosto 2009, 22:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Debci

Hola amigos tengo un problema, a comprar cadenas, miren la variable valor_usuario se de cierto, 100% que es Debci (es una string) y alc omparar me dice que no =O
Código (java) [Seleccionar]

if (valor_usuario == "Debci" ){
           System.out.println("Si que es debci ");
       }else{
           System.out.println("No es debci");
       }

Y me devuelve:

No es debci


Como es esto?

PD: Miren mi clase que programé y me curré muchisimo el post, y nadie me ha agradecido...
http://foro.elhacker.net/java/clase_beta_lectura_por_tags_archivos_xml-t263818.0.html

Saludos

egyware

El problema es el siguiente, estas comparando punteros :P osbiamente eso siempre te va dar falso.
:huh: oh dije punteros en Java no lo hay, bueno para que lo sepas si pero son muy distintos que los de C y C++ que en realidad es como si no hubiera.
El punto que no puedes hacer esto ya que siempre te dara falso.
Código (java) [Seleccionar]

String h = "Hola";
if(h == "Hola"){
   System.out.println("Jamas se mostrara esta linea");
}else{
   System.out.println("Pero porque si son iguales");
}

La solución, existen dos funciones dejame buscarlas que siempre que se me olvidan...
boolean equals(String another string);
boolean equalsIgnoreCase(String another string);

La primera funcion compara 2 string y comprueba si son guales
La segunda funcion compara 2 string ignorando las mayusculas y minusculas

Ah no soy un guru de Java pero se bastante, generalmente busco en el API de Java (busca en Google) lo que necesito hay muchas funciones de java implementadas.
Adios

1mpuls0

#2
Citarsiempre te dara falso.
egyware estoy deacuerdo con esto que dices.

Pero con esto... no!

System.out.println("Jamas se mostrara esta linea");


Bueno el punto es que no puedes usar el operador relacional "==" para comprar cadenas.


Citar
Todas las clases que se definan en Java heredarán el método equals(), que se puede utilizar para comparar dos objetos. Esta comparación no es la misma que proporciona el operador ==, que solamente compara si dos referencias a objetos apuntan al mismo objeto.

El método equals() se utiliza para saber si dos objetos separados son del mismo tipo y contienen los mismos datos. El método devuelve true si los objetos son iguales y false en caso contrario.

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-10.html

Espero que te sirva la siguiente clase.


public class comparacionCadenas {

   public static void main(String args[])
   {
    new comparacionCadenas();
   }
   
   public comparacionCadenas() {
   
    String cadena1 = "Hola 1mpuls0";
    String cadena2 = "Hola 1mpuls0";
    String cadena3 = "HOLA 1MPULS0";
   
    if(cadena1 == cadena2)
    {
    System.out.println("Esta comparacion siempre devuelve falso(en caso de Strings)");
    }
    else{
    System.out.println("*Las cadenas no son iguales*");
    }
   
    if(cadena1.equals(cadena2))
    {
    System.out.println("Las cadenas son iguales");
    }
    else{
    System.out.println("Las cadenas no son iguales");
    }
   
    if(cadena1.equalsIgnoreCase(cadena3))
    {
    System.out.println("NO ME IMPORTAN SI SON MAYUSCULAS");
    }
    else
    {
    System.out.println("Las cadenas no son iguales");
    }
   }
}



Publica una respuesta.


Saludos
abc

Debci

Cita de: Darhius en 25 Agosto 2009, 06:22 AM
Citarsiempre te dara falso.
egyware estoy deacuerdo con esto que dices.

Pero con esto... no!

System.out.println("Jamas se mostrara esta linea");


Bueno el punto es que no puedes usar el operador relacional "==" para comprar cadenas.


Citar
Todas las clases que se definan en Java heredarán el método equals(), que se puede utilizar para comparar dos objetos. Esta comparación no es la misma que proporciona el operador ==, que solamente compara si dos referencias a objetos apuntan al mismo objeto.

El método equals() se utiliza para saber si dos objetos separados son del mismo tipo y contienen los mismos datos. El método devuelve true si los objetos son iguales y false en caso contrario.

http://www.itapizaco.edu.mx/paginas/JavaTut/froufe/parte5/cap5-10.html

Espero que te sirva la siguiente clase.


public class comparacionCadenas {

    public static void main(String args[])
    {
    new comparacionCadenas();
    }
   
    public comparacionCadenas() {
   
    String cadena1 = "Hola Darhius";
    String cadena2 = "Hola Darhius";
    String cadena3 = "HOLA DARHIUS";
   
    if(cadena1 == cadena2)
    {
    System.out.println("Esta comparacion siempre devuelve falso(en caso de Strings)");
    }
    else{
    System.out.println("*Las cadenas no son iguales*");
    }
   
    if(cadena1.equals(cadena2))
    {
    System.out.println("Las cadenas son iguales");
    }
    else{
    System.out.println("Las cadenas no son iguales");
    }
   
    if(cadena1.equalsIgnoreCase(cadena3))
    {
    System.out.println("NO ME IMPORTAN SI SON MAYUSCULAS");
    }
    else
    {
    System.out.println("Las cadenas no son iguales");
    }
    }
}



Publica una respuesta.


Saludos
dpm a los dos, esto e slo que buscaba muchas gracias !!!
;D
Saludos

egyware

Citar
... no!
Código:

Código (java) [Seleccionar]

System.out.println("Jamas se mostrara esta linea");


Bueno el punto es que no puedes usar el operador relacional "==" para comprar cadenas.

Por curiosidad porque ¿no estas de acuerdo?

Debci

Cita de: egyware en 25 Agosto 2009, 13:44 PM
Citar
... no!
Código:

Código (java) [Seleccionar]

System.out.println("Jamas se mostrara esta linea");


Bueno el punto es que no puedes usar el operador relacional "==" para comprar cadenas.

Por curiosidad porque ¿no estas de acuerdo?
yo totalmente :)

saludos

juancho77