Foros del Web » Programación para mayores de 30 ;) » Java »

porque me da error cuando comparo en este ejemplo

Estas en el tema de porque me da error cuando comparo en este ejemplo en el foro de Java en Foros del Web. cuando comparo las dos cadenas todo funciona bien en la sintaxis , pero cuando comparo con el numero me da error en la sintaxis. SE ...
  #1 (permalink)  
Antiguo 05/02/2013, 20:13
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
porque me da error cuando comparo en este ejemplo

cuando comparo las dos cadenas todo funciona bien en la sintaxis, pero cuando comparo con el numero me da error en la sintaxis.
SE QUE NO ES LO MISMO NUMERO QUE LETRAS PERO DE TODOS MODOS SE DEBERÍA PODER COMPRAR Y LAS SINTAXIS NO ME DEBERÍA DAR ERROR
COMO LE PUEDE HACER CON ESTE EJEMPLO PARA PODERLOS COMPARAR
GRACIAS

public class NewClass1 {
public String cadena1="hola";
public String cadena2="jj";
public int numero2=6; //y si lo quiero comprarar este con el primero me da error en sintasis
public void de()
{
if(cadena1 != cadena2) //si en vez de poner cadena2 pongo numero2 me da error porque
{
System.out.println("son numeros");
}
else
{
System.out.println("no son numeros ");
}
}
public static void main(String[] args)
{
NewClass1 val = new NewClass1();
val.de();
}
}
  #2 (permalink)  
Antiguo 05/02/2013, 22:32
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: porque me da error cuando comparo en este ejemplo

...pues comparar String en Java parece una tontera pero trae dolores de cabeza a mas de uno. Es un error en Java utilizar operadores relacionales (== o !=) para comparar String...porque?...recuerda que un String en Java es un OBJETO...no es un tipo de dato primitivo. Por la tanto, cadena1 y cadena2 almacenan la dirección de memoria donde se encuentra el objeto, en este caso un String...por eso se les llama variables de referencia...porque hacen referencia a un direccion de memoria donde se encuentra un objeto. Entonces si tu comparas cadena1 == cadena2, lo que estas haciendo en realidad es comparar si las direcciones de memoria son iguales...no estas comparado los String...para comparar los String debes usar métodos...

Tienes 3 formas de comparar Strings:

La primera, usando equals();

Código JAVA:
Ver original
  1. if(cadena1.equals(cadena2)){
  2. // son iguales
  3. }else{
  4. // no son iguales
  5. }

La segunda forma, usando CompareTo()

Código JAVA:
Ver original
  1. if (cadena1.compareTo(cadena2) == 0){
  2.  
  3. // cadena1 y cadena2 son iguales
  4.  
  5. }else if (cadena1.compareTo(cadena2) < 0){
  6.  
  7. //cadena1 va antes que cadena2
  8.  
  9. }else if (cadena1.compareTo(cadena2) > 0){
  10.  
  11. //cadena2 va después que cadena1
  12. }

Y luego tienes Collator, pero es algo mas complicado de usar, te recomiendo las dos anteriores....
  #3 (permalink)  
Antiguo 06/02/2013, 02:30
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: porque me da error cuando comparo en este ejemplo

Cita:
Iniciado por jor_0203 Ver Mensaje
SE QUE NO ES LO MISMO NUMERO QUE LETRAS PERO DE TODOS MODOS SE DEBERÍA PODER COMPRAR Y LAS SINTAXIS NO ME DEBERÍA DAR ERROR
COMO LE PUEDE HACER CON ESTE EJEMPLO PARA PODERLOS COMPARAR
GRACIAS
Java funciona como funciona, y la razón es clara, para impedir que cometas errores.

Ya te lo han dicho una vez, lee algún tutorial básico, tal y como lo estás haciendo vas a aprender poco y mal.

ipraetoriux, aunque lo que dices es correcto, su problema es que quiere comparar un int con una String.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 06/02/2013, 19:47
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: porque me da error cuando comparo en este ejemplo

Cita:
Iniciado por ipraetoriux Ver Mensaje
...pues comparar String en Java parece una tontera pero trae dolores de cabeza a mas de uno. Es un error en Java utilizar operadores relacionales (== o !=) para comparar String...porque?...recuerda que un String en Java es un OBJETO...no es un tipo de dato primitivo. Por la tanto, cadena1 y cadena2 almacenan la dirección de memoria donde se encuentra el objeto, en este caso un String...por eso se les llama variables de referencia...porque hacen referencia a un direccion de memoria donde se encuentra un objeto. Entonces si tu comparas cadena1 == cadena2, lo que estas haciendo en realidad es comparar si las direcciones de memoria son iguales...no estas comparado los String...para comparar los String debes usar métodos...

Tienes 3 formas de comparar Strings:

La primera, usando equals();

Código JAVA:
Ver original
  1. if(cadena1.equals(cadena2)){
  2. // son iguales
  3. }else{
  4. // no son iguales
  5. }

La segunda forma, usando CompareTo()

Código JAVA:
Ver original
  1. if (cadena1.compareTo(cadena2) == 0){
  2.  
  3. // cadena1 y cadena2 son iguales
  4.  
  5. }else if (cadena1.compareTo(cadena2) < 0){
  6.  
  7. //cadena1 va antes que cadena2
  8.  
  9. }else if (cadena1.compareTo(cadena2) > 0){
  10.  
  11. //cadena2 va después que cadena1
  12. }

Y luego tienes Collator, pero es algo mas complicado de usar, te recomiendo las dos anteriores....
genial muy buen aporte gracias
  #5 (permalink)  
Antiguo 06/02/2013, 19:51
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: porque me da error cuando comparo en este ejemplo

Cita:
Iniciado por Xerelo Ver Mensaje
Java funciona como funciona, y la razón es clara, para impedir que cometas errores.

Ya te lo han dicho una vez, lee algún tutorial básico, tal y como lo estás haciendo vas a aprender poco y mal.

ipraetoriux, aunque lo que dices es correcto, su problema es que quiere comparar un int con una String.
checa la contestación de mi cuate de arriba y te darás cuenta que lo que pregunte
tiene mucho sentido, no des criticas que no corresponden, mejor aprende y se mas sencillo, ya que lo que para ti es fácil para los demás puede ser mas complicado
gracias y disculpa si te ofendí por mi ignorancia
  #6 (permalink)  
Antiguo 06/02/2013, 20:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 57
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: porque me da error cuando comparo en este ejemplo

[
Código PHP:
Ver original
  1. String cadena1="hola", cadena2 ="hola";
  2.  
  3. if(cadena1.equalIgnoreCase(cadena2)){
  4. //verdaderp
  5.  
  6. }
  #7 (permalink)  
Antiguo 08/02/2013, 05:09
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 21 años, 9 meses
Puntos: 361
Respuesta: porque me da error cuando comparo en este ejemplo

Hola:

Cita:
Iniciado por jor_0203 Ver Mensaje
SE QUE NO ES LO MISMO NUMERO QUE LETRAS PERO DE TODOS MODOS SE DEBERÍA PODER COMPRAR Y LAS SINTAXIS NO ME DEBERÍA DAR ERROR
COMO LE PUEDE HACER CON ESTE EJEMPLO PARA PODERLOS COMPARAR
GRACIAS
Piensa que eso también forma parte de la vida misma, y no pretendo filosofar, ¿Qué sentido tendría comparar perros con naranjas? Pienso que ninguno, la programación es lo mismo.

Saludos.

  #8 (permalink)  
Antiguo 09/02/2013, 16:28
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: porque me da error cuando comparo en este ejemplo

Cita:
Iniciado por ipraetoriux Ver Mensaje
...pues comparar String en Java parece una tontera pero trae dolores de cabeza a mas de uno. Es un error en Java utilizar operadores relacionales (== o !=) para comparar String...porque?...recuerda que un String en Java es un OBJETO...no es un tipo de dato primitivo. Por la tanto, cadena1 y cadena2 almacenan la dirección de memoria donde se encuentra el objeto, en este caso un String...por eso se les llama variables de referencia...porque hacen referencia a un direccion de memoria donde se encuentra un objeto. Entonces si tu comparas cadena1 == cadena2, lo que estas haciendo en realidad es comparar si las direcciones de memoria son iguales...no estas comparado los String...para comparar los String debes usar métodos...

Tienes 3 formas de comparar Strings:

La primera, usando equals();

Código JAVA:
Ver original
  1. if(cadena1.equals(cadena2)){
  2. // son iguales
  3. }else{
  4. // no son iguales
  5. }

La segunda forma, usando CompareTo()

Código JAVA:
Ver original
  1. if (cadena1.compareTo(cadena2) == 0){
  2.  
  3. // cadena1 y cadena2 son iguales
  4.  
  5. }else if (cadena1.compareTo(cadena2) < 0){
  6.  
  7. //cadena1 va antes que cadena2
  8.  
  9. }else if (cadena1.compareTo(cadena2) > 0){
  10.  
  11. //cadena2 va después que cadena1
  12. }

Y luego tienes Collator, pero es algo mas complicado de usar, te recomiendo las dos anteriores....
Código PHP:
Ver original
  1. aqui funciona bien
  2.  public static void main(String arg[]){
  3.      String cadena="hola";
  4.        int numero=5;
  5.        if(cadena.equals(numero))
  6.        {
  7.            System.out.println("las variables son iguales");
  8.        }
  9.        else
  10.        {
  11.         System.out.println("no son lo mismo valores");
  12.        }
  13.      }
  14. en la de abajo no sale
  15.  
  16. public static void main(String arg[]){
  17.      String cadena="hola";
  18.        int numero=5;
  19.        if(cadena.compareTo(numero))
  20.        {
  21.            System.out.println("las variables son iguales");
  22.        }
  23.        else
  24.        {
  25.         System.out.println("no son lo mismo valores");
  26.        }

en la de arriba todo sale bien pero en la de abajo no
y no se cual es mi error
gracias
  #9 (permalink)  
Antiguo 09/02/2013, 23:14
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: porque me da error cuando comparo en este ejemplo

..es que mi amigo tenes problemas en los conceptos de los tipos de datos...te explico muy resumidamente

...Java es un lenguaje "fuertemente tipado", esto significa que al momento de definir un dato, se le debe asignar un "tipo de dato", un String, un int, un char, un boolean, u otro Objeto...y este dato una vez definido no puede ser usado como si fuera otro tipo de dato, al menos que sea convertido...esto significa que si defines un tipo de datos como int por ejemplo...

Código java:
Ver original
  1. int a;

...luego no puedes inicializarlo con un String, u otro dato que no sea int...ni tampoco puedes modificarlo...si yo inicializo esta variable con un String me dará un error

Código java:
Ver original
  1. a = "Nicolas"  // ERROR!!! la variable a es un int, no un String

...a diferencia de otros lenguajes de programación como Javascript o PHP, estos "no son fuertemente tipado", es decir, no hay que determinar explicitamente el tipo de dato de una variable. Cada una de ellas puede almacenar un String, un int, un boolean, y pueden ser modificadas por cualquier otro tipo de dato en cualquier momento...

...en lenguajes como Java, para comparar valores, siempre deben ser del mismo tipo de dato, perooooooo, en caso que no lo sean podes convertirlos...ahora, al momento de convertir un tipo de dato en otro, tenes que tener en cuenta que dato vas a modificar, por que cada tipo de dato ocupa una x cantidad de bytes, y tenes que tener en cuenta eso para no perder datos durante la conversión o para que durante la ejecución no se arrogue algún valor inesperado o erróneo. ..

long 64 bits
double 64 bits
int 32 bits
float 32 bits
short 16 bits
char 16 bits
byte 8 bits
boolean 8 bits

....luego para convertir valores tenes varias formas, te pongo algunas fáciles como para que veas...

Código JAVA:
Ver original
  1. String str = "1234";
  2. int num = Integer.parseInt(str);
  3.  
  4. int num = 1234;  
  5. String str = String.valueOf(num);
  #10 (permalink)  
Antiguo 10/02/2013, 07:26
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: porque me da error cuando comparo en este ejemplo

Cita:
Iniciado por ipraetoriux Ver Mensaje
..es que mi amigo tenes problemas en los conceptos de los tipos de datos...te explico muy resumidamente

...Java es un lenguaje "fuertemente tipado", esto significa que al momento de definir un dato, se le debe asignar un "tipo de dato", un String, un int, un char, un boolean, u otro Objeto...y este dato una vez definido no puede ser usado como si fuera otro tipo de dato, al menos que sea convertido...esto significa que si defines un tipo de datos como int por ejemplo...

Código java:
Ver original
  1. int a;

...luego no puedes inicializarlo con un String, u otro dato que no sea int...ni tampoco puedes modificarlo...si yo inicializo esta variable con un String me dará un error

Código java:
Ver original
  1. a = "Nicolas"  // ERROR!!! la variable a es un int, no un String

...a diferencia de otros lenguajes de programación como Javascript o PHP, estos "no son fuertemente tipado", es decir, no hay que determinar explicitamente el tipo de dato de una variable. Cada una de ellas puede almacenar un String, un int, un boolean, y pueden ser modificadas por cualquier otro tipo de dato en cualquier momento...

...en lenguajes como Java, para comparar valores, siempre deben ser del mismo tipo de dato, perooooooo, en caso que no lo sean podes convertirlos...ahora, al momento de convertir un tipo de dato en otro, tenes que tener en cuenta que dato vas a modificar, por que cada tipo de dato ocupa una x cantidad de bytes, y tenes que tener en cuenta eso para no perder datos durante la conversión o para que durante la ejecución no se arrogue algún valor inesperado o erróneo. ..

long 64 bits
double 64 bits
int 32 bits
float 32 bits
short 16 bits
char 16 bits
byte 8 bits
boolean 8 bits

....luego para convertir valores tenes varias formas, te pongo algunas fáciles como para que veas...

Código JAVA:
Ver original
  1. String str = "1234";
  2. int num = Integer.parseInt(str);
  3.  
  4. int num = 1234;  
  5. String str = String.valueOf(num);
muchas gracias yo no sabia esto
y lo quería hacer igual que php
que genial eres

Etiquetas: ejemplo, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:07.