Foro de elhacker.net

Programación => Java => Mensaje iniciado por: angra en 26 Julio 2012, 10:27 am



Título: Como se leería estos en palabra llanas
Publicado por: angra en 26 Julio 2012, 10:27 am
Hola este es mi primer tema quitando la presentación ;D. Estoy aprendiendo java  :rolleyes: y hay algunas veces que no se leer trozos de java, os escribo a continuación el trozo de java:

String aux = sc.nextline();

if(aux==null || aux= "") aux="s"

si me podéis poner en palabras llanas lo que significa, lo agredeceré mucho?

Muchas gracias de antemano ;-)


Título: Re: Como se leería estos en palabra llanas
Publicado por: Senior++ en 26 Julio 2012, 10:47 am
Hola este es mi primer tema quitando la presentación ;D. Estoy aprendiendo java  :rolleyes: y hay algunas veces que no se leer trozos de java, os escribo a continuación el trozo de java:

String aux = sc.nextline();

if(aux==null || aux= "") aux="s"

si me podéis poner en palabras llanas lo que significa, lo agredeceré mucho?

Muchas gracias de antemano ;-)

Creo que eso esta mal ese código esta mal, creo pero si alguien lo verifica pues mejor...
Seria así:

SI aux es Null (comparacion) o aux es "" (osea sin ningún caracter)

Ese código tiene varios fallos (creo) por ejemplo este esta mal: aux= "" y este aux="s" no se por que esta afuera de la condición IF

Saludos


Título: Re: Como se leería estos en palabra llanas
Publicado por: ChavalChavito en 26 Julio 2012, 17:09 pm
efectivamente el codigo esta mal, en la condicion del if nos deberia volver un booleano .. y tenemos un (booleano || String) lo cual no tiene ningun sentido...
al usar un solo igual estas asignando..
para entrar hacen falta las llaves tb..
if (<condicion>){
} else{
}


Título: Re: Como se leería estos en palabra llanas
Publicado por: Pablo Videla en 26 Julio 2012, 17:11 pm
Hola este es mi primer tema quitando la presentación ;D. Estoy aprendiendo java  :rolleyes: y hay algunas veces que no se leer trozos de java, os escribo a continuación el trozo de java:

String aux = sc.nextline();

if(aux==null || aux= "") aux="s"

si me podéis poner en palabras llanas lo que significa, lo agredeceré mucho?

Muchas gracias de antemano ;-)

Cuando un if no tiene llaves se lee como parte del if la linea que continua

el codigo esta mal porque en la segunda comparacion || aux="" realmente esta seteando un valor y no comparandolo tendria que ser ||aux ==""

osea si arreglas el codigo seria

Código
  1. if(aux==null || aux== "")
  2. aux="s";
  3.  

Si aux es nulo o si aux viene vacio, entonces seteamos el valor "s" a aux.

aunque mejor haría el if con las llaves, por buena costumbre xD

Código
  1. if(aux==null || aux== "") {
  2. aux="s";
  3. }
  4.  


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.


Título: Re: Como se leería estos en palabra llanas
Publicado por: int_0x40 en 26 Julio 2012, 17:49 pm
Hola angra:

Como un agregado y considerando lo que ya te han dicho, me imagino que ya sabrás que un operador de asignación en ciertos lenguajes es = (es decir que asigna un valor a una variable dada), no confundir con el operador de comparación de igualdad, que en muchos lenguajes se representa con ==, o el de identidad ===.

Entonces una sentencia como String aux = sc.nextline(); implica que le asignas el valor que retorne la función sc.nextline() a la variable aux,  en lenguajes de tipos de datos estrictos debe ser String el valor que se asigne a una variable de tipo String.

En cambio si ves expresiones como aux==null estás comparando si es igual el valor de aux con un valor nulo, el resultado será verdadero o falso, esa condición es la que da razón de ser a la sentencia IF. Si tienes aux==null || aux== "", es una condición en la que se compara lógicamente entre una U otra expresión (operador OR) , es decir quieres saber si la condición aux igual a null O aux igual a cadena vacía es verdadera o falsa, dependiendo de si una de las dos es verdadera se asignará la cadena "s" a la variable aux.

Saludos.


Título: Re: Como se leería estos en palabra llanas
Publicado por: angra en 26 Julio 2012, 20:44 pm
Muchas gracias a todos por la explicación,  ;-) ahora sé un poco más . La verdad es que estaba bloqueado, no lo entendía. Tengo más dudas pero pocoa poco que no quiero ser pesao   :rolleyes:. Lo dicho gracias  ;)


Título: Re: Como se leería estos en palabra llanas
Publicado por: Senior++ en 26 Julio 2012, 21:14 pm
Mira angra  te explico un poco más el IF



Por ejemplo quieres hacer un programa que si la variable numero sea igual a 3 te muestre un mensaje que la variable numero valga 3 ok?
seria así:

Código:
class Reloj{
    public static void main(String[]args){
   int numero=3; //Aquí estamos igualando...
          
  if(numero==3){ //Aquí estamos comparando... si esto devuelve un valor true se cumple la condición si devuelve un valor false no se cumple...      
 System.out.println("aquí imprimo por consola SOLO SI EL VALOR SE CUMPLE:"+numero);  //El + en este ejercicio sirve para concatenar palabras osea unirlas.
  }
  else{ //Aquí solo imprimira SOLO si la condicion devuelve un valor false, osea si numero no tiene de valor 3
  System.out.println("aquí imprimo por consola SOLO SI EL VALOR SE CUMPLE:"+numero);
  }
    }
}

Ahora te pondre otro código y piensa que crees que saldrá:

Código:
class Reloj{
    public static void main(String[]args){
   int numero=2; //Aquí estamos igualando...
          
  if(numero==3){ //Aquí estamos comparando... si esto devuelve un valor true se cumple la condición si devuelve un valor false no se cumple...      
 System.out.println("aquí imprimo por consola SOLO SI EL VALOR SE CUMPLE:"+numero);  //El + en este ejercicio sirve para concatenar palabras osea unirlas.
  }
  else{ //Aquí solo imprimira SOLO si la condicion devuelve un valor false, osea si numero no tiene de valor 3
  System.out.println("aquí imprimo por consola SOLO SI EL VALOR NO CUMPLE:"+numero);
  }
    }
}

Bueno te explico un poco existen:

> mayor que Ej: if (numero>numero2){} (obviamente el código sigue pero ya solo depende de ti)
< menor que Ej: if (numero<numero2){}
== Igual que Ej: if (numero==numero2){}
!=  es distinto Ej:if (numero!=numero2){}
||  o (si,significa o) Ej: if(numero=3 || numero2 = 5){} Aquí uno de los dos tiene que ser true para que funcione ya depende de ti.
&& y (Si,significa y) Ej: if(numero=3 && numero2 = 5) {}Aqui los dos se tienen que cumplir, si no devuelve un valor false.

En cambio hay otro para las variables boleanas
! No (si, significa no) if(!numero)  (obviamente tienes que crear una variable bolean que sería asi: boolean numero

Bueno espero que estén todos a lo mejor no me acorde de alguno pero si tienes alguna duda dimelo



Título: Re: Como se leería estos en palabra llanas
Publicado por: angra en 27 Julio 2012, 13:48 pm
Hola Senior, viendo el último codigo creo que el resultado es lo que ponga en else ya que la condición no se cumple, siendo el valor del numero=2 y no es 3 como en la condición.
De nuevo gracias  ;)


Título: Re: Como se leería estos en palabra llanas
Publicado por: Valkyr en 27 Julio 2012, 17:07 pm
Una cosa que me parece nadie ha dicho. En Java las comparaciones de cadenas de caracteres (String) se realizan con el método equals de dicha clase. Es decir, el código debería ser:

Código
  1. String aux = sc.nextline();
  2.  
  3. if(aux==null || aux.equals(""))
  4.    aux="s"
  5.  

Compararlo con null con el operador '==' si es correcto, pero para compararlo con cualquier otra cadena de caracteres (incluida la cadena vacía, que es la del ejemplo) se debe hacer con el método equals.

Saludos.


Título: Re: Como se leería estos en palabra llanas
Publicado por: Pablo Videla en 27 Julio 2012, 17:54 pm
A lo mejor es una mala practica compararlo con ==""  pero de que se puede, se puede  :xD


Título: Re: Como se leería estos en palabra llanas
Publicado por: leogtz en 27 Julio 2012, 20:44 pm
A lo mejor es una mala practica compararlo con ==""  pero de que se puede, se puede  :xD

No, no debería usarse, == comprueba si ambos objetos son iguales, no es lo mismo a .equals(string).

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html


Título: Re: Como se leería estos en palabra llanas
Publicado por: Pablo Videla en 27 Julio 2012, 20:59 pm
No, no debería usarse, == comprueba si ambos objetos son iguales, no es lo mismo a .equals(string).

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html

 :o
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/string.htm

Tienen toda la razón.


Título: Re: Como se leería estos en palabra llanas
Publicado por: int_0x40 en 29 Julio 2012, 18:31 pm
cierto, bueno hay que aprender de las especificaciones de java --->

Citar
To compare Strings for equality, don't use ==. The == operator checks to see if two objects are exactly the same object. Two strings may be different objects, but have the same value (have exactly the same characters in them). Use the .equals() method to compare strings for equality. Similarly, use the .compareTo() method to test for unequal comparisons

En resumen, el operador == en Java checa si dos objetos son exactamente el mismo. Dos cadenas pueden ser diferentes pero tener el mismo valor, el mismo número de caracteres como en "loca" y "cola".El método equals() las compara en busca de igualdad.


Saludos.


Título: Re: Como se leería estos en palabra llanas
Publicado por: ChavalChavito en 29 Julio 2012, 23:59 pm
y .equalsIgnoreCase(String) compara cadenas sin discriminar mayuscula y minuscula.. ;)