2010-06-01 48 views
21

Tôi có hai yếu tố dữ liệu kép trong một đối tượng.Làm cách nào để bạn đặt giá trị kép thành "không có giá trị"

Đôi khi chúng được đặt với giá trị phù hợp và đôi khi không. Khi trường biểu mẫu mà từ đó chúng nhận được giá trị không được điền, tôi muốn đặt chúng thành một số giá trị cho tôi biết, trong phần còn lại của mã mà các trường biểu mẫu được để trống.

Tôi không thể đặt giá trị thành giá trị rỗng do lỗi đó, có cách nào đó tôi có thể đặt chúng 'Không xác định'.

PS. Không chỉ tôi không chắc chắn rằng điều này là có thể, nó có thể cũng không có ý nghĩa. Nhưng nếu có một số thực hành tốt nhất cho một tình huống như vậy tôi sẽ được quan tâm để nghe nó.

+0

do u đưa ra một số ví dụ – ratty

Trả lời

46

Hai lựa chọn rõ ràng:

  • Sử dụng Double thay vì double. Sau đó, bạn có thể sử dụng null, nhưng bạn đã thay đổi đáng kể các mẫu bộ nhớ liên quan.
  • Sử dụng một "không phải là một con số" (NaN) giá trị:

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

    Lưu ý rằng một số các hoạt động khác trên số "bình thường" có thể cung cấp cho bạn giá trị NaN cũng mặc dù (0 chia cho 0 ví dụ).

+1

Cảm ơn ... NaN sẽ giải quyết các mục đích của tôi. Tôi sẽ không làm bất kỳ số học nào trên những con số này để làm điều đó một cách độc đáo. – Ankur

+6

Hãy coi chừng với 'NaN' khi sử dụng' == 'với chúng luôn trả về' false', thậm chí 'Double.NaN == Double.NaN' là' false'. Bạn phải sử dụng 'Double.isNaN (...)' để kiểm tra nếu một 'double' không phải là một số. – Jesper

+0

Tôi cũng thường sử dụng thủ thuật "Double = null". Tôi muốn nó vào tùy chọn NaN, cả hai vì NaN có thể xảy ra như một giá trị, và bởi vì "null cho unset" là một thực tế phổ biến trong Java. – sleske

Các vấn đề liên quan