elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con comparación de cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con comparación de cadenas  (Leído 5,643 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Problema con comparación de cadenas
« en: 24 Agosto 2009, 22:45 pm »

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
  1. if (valor_usuario == "Debci" ){
  2.            System.out.println("Si que es debci ");
  3.        }else{
  4.            System.out.println("No es debci");
  5.        }
  6.  
Y me devuelve:
Código:
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


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Problema con comparación de cadenas
« Respuesta #1 en: 24 Agosto 2009, 23:18 pm »

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
  1. String h = "Hola";
  2. if(h == "Hola"){
  3.   System.out.println("Jamas se mostrara esta linea");
  4. }else{
  5.   System.out.println("Pero porque si son iguales");
  6. }
  7.  
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


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Problema con comparación de cadenas
« Respuesta #2 en: 25 Agosto 2009, 06:22 am »

Citar
siempre te dara falso.
egyware estoy deacuerdo con esto que dices.

Pero con esto... no!
Código:
 
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.

Código:
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
« Última modificación: 3 Septiembre 2015, 18:56 pm por 1mpuls0 » En línea

abc
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema con comparación de cadenas
« Respuesta #3 en: 25 Agosto 2009, 09:55 am »

Citar
siempre te dara falso.
egyware estoy deacuerdo con esto que dices.

Pero con esto... no!
Código:
 
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.

Código:
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
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Problema con comparación de cadenas
« Respuesta #4 en: 25 Agosto 2009, 13:44 pm »

Citar
... no!
Código:

Código
  1.  
  2. System.out.println("Jamas se mostrara esta linea");
  3.  

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

Por curiosidad porque ¿no estas de acuerdo?
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema con comparación de cadenas
« Respuesta #5 en: 25 Agosto 2009, 20:15 pm »

Citar
... no!
Código:

Código
  1.  
  2. System.out.println("Jamas se mostrara esta linea");
  3.  

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

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

saludos
En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Problema con comparación de cadenas
« Respuesta #6 en: 25 Agosto 2009, 21:46 pm »

bien, veo que no te gusta leer!  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comparación de cadenas (string)
Programación Visual Basic
el_lichal 4 2,651 Último mensaje 17 Noviembre 2005, 18:40 pm
por el_lichal
ayuda con comparacion de cadenas en excel.
Programación Visual Basic
Railil 4 1,866 Último mensaje 24 Noviembre 2006, 17:04 pm
por Railil
comparacion de cadenas « 1 2 »
Programación C/C++
m@o_614 10 6,778 Último mensaje 19 Febrero 2012, 18:11 pm
por Sagrini
Ayuda Comparacion de cadenas
Java
charmedever 3 2,215 Último mensaje 16 Julio 2012, 05:19 am
por hucruz
Comparación de cadenas « 1 2 »
Programación C/C++
kaostias 10 5,857 Último mensaje 24 Octubre 2013, 16:05 pm
por kaostias
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines