2010-06-01 7 views
21

Tengo dos elementos de datos dobles en un objeto.¿Cómo se establece un valor doble en "sin valor"

A veces se configuran con un valor adecuado y otras no. Cuando el campo de formulario desde el que se reciben los valores no se rellena, quiero establecerlos en un valor que me indique, durante el resto del código, que los campos del formulario se dejaron vacíos.

No puedo establecer los valores en nulos, ya que eso da un error, ¿hay alguna forma en que pueda hacerlos 'Indefinidos'.

PS. No solo no estoy seguro de que esto sea posible, también podría no tener sentido. Pero si hay alguna mejor práctica para tal situación, me gustaría escucharla.

+0

da algunos ejemplos – ratty

Respuesta

46

dos opciones obvias:

  • Use Double en lugar de double. Luego puede usar null, pero ha cambiado sustancialmente los patrones de memoria.
  • Use un "no es un número" (NaN) Valor:

    double d = 5.5; 
    System.out.println(Double.isNaN(d)); // false 
    d = Double.NaN; 
    System.out.println(Double.isNaN(d)); // true 
    

    Tenga en cuenta que algunas otras operaciones con números "normales" que podrían dar valores NaN así, aunque (0 dividido por 0, por ejemplo).

+1

Gracias ... NaN resolverá mis propósitos. No haré ninguna aritmética con estos números, así que lo haré muy bien. – Ankur

+6

Tenga cuidado con 'NaN' que usar' == 'con ellos siempre devuelve' false', incluso 'Double.NaN == Double.NaN' es' false'. Debe usar 'Double.isNaN (...)' para verificar si un 'double' no es un número. – Jesper

+0

También uso comúnmente el truco "Doble = nulo". Lo preferiría a la opción NaN, tanto porque NaN podría ocurrir como un valor, y porque "nulo por unset" es una práctica común en Java. – sleske

Cuestiones relacionadas