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

inicializar una variable double

Estas en el tema de inicializar una variable double en el foro de Java en Foros del Web. Hola a todos, Tengo un problema a la hora de inicializar una variable double. El caso es que necesito crear una variable tipo double, pero ...
  #1 (permalink)  
Antiguo 06/02/2006, 06:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 2 meses
Puntos: 1
inicializar una variable double

Hola a todos,


Tengo un problema a la hora de inicializar una variable double. El
caso es que necesito crear una variable tipo double, pero no le quiero
asignar ningún valor, es decir que la variable esté vacia (null).


Pero sino le asigno ningún valor me un error cuando quiero utilizar esa
varible diciendome que dicha variable no está inicializada.


double dblValor;



Si por ejemplo paso esa variable a un procedimiento, me da un error
y me dice que la variable no está inicializada.


¿No se puede crear una variable double cuyo contenido no tenga
valor, o con un valor nulo?


Gracias de antemano.
  #2 (permalink)  
Antiguo 06/02/2006, 06:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
double es un tipo primitivo y por lo tanto no puede estar inicializado a null.

Por otro lado, es un error utilizar una variable sin haberla inicializado previamente, aunque sea inicializarla explicitamente a null, por lo que el compilador no te deja hacerlo.

Cita:
¿No se puede crear una variable double cuyo contenido no tenga
valor, o con un valor nulo?
No. Eso lo puedes hacer con una variable de clase Double, incializandola explicitamente a null, pero no con una del tipo primitivo double.

Un saludo
  #3 (permalink)  
Antiguo 06/02/2006, 07:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 2 meses
Puntos: 1
variable double

Hola,


lo que quiero es volcar el contenido de un parámetro en la varible
double. El caso es que si inicializo al principio con valor 0 no se si
es cero porque lo he inicializado yo o porque era el contenido del
parámetro. Además que esa variable en algún caso no tiene que tener
ningún valor ya que el parámetro puede que venga vacio.


double dblAntiPcc = new
Double(request.getParameter("anti_pcc")).doubleVal ue();


Entonces si pongo lo anterior cuando el parametro "anti_pcc" es nulo me
da un error al asignarlo a la variable dblAntiPcc. Entoces no se como
puedo volcar el contenido de un parametro a una variable double cuando
su contenido es nulo. Cuando el parámetro no es nulo no hay problema.
Sólo tengo el problema cuando el parámetro es nulo.
  #4 (permalink)  
Antiguo 06/02/2006, 09:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Código:
String dblAntiPccString = request.getParameter("anti_pcc");
if(dblAntiPccString!=null && dblAntiPccString.trim().length>0)
{
  // Te han pasado la variable
  ...
}
else
{
  // No te han pasado la variable o te la han pasado vacia
  ...
}
Por otro lado, tambien es convieniente tratar el caso de que te hayan pasado un valor pero en realidad no sea un numero, ya que si no te saltará el programa con una Excepcion.
  #5 (permalink)  
Antiguo 06/02/2006, 21:53
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
para "parsear" el numero y revisar que sea un numero puedes hacerlo asi:

Código PHP:

String dblAntiPccString 
request.getParameter("anti_pcc");
double dblAntiPcc 0;

if(
dblAntiPccString!=null && dblAntiPccString.trim().length>0)
{
  
// Te han pasado la variable
  
try{

     
dblAntiPcc Double.parseDouble(dblAntiPccString);

  }catch(
Exception e){
     
//Es posible que no sea un numero
     // o que este mal el formato
  
}
}
else
{
  
// No te han pasado la variable o te la han pasado vacia
  //...

Espero te sirva
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 03:07.