2015-05-11 4 views
10

मुझे java.util.Date चर को खाली करने में आपकी सहायता चाहिए। जैसे-जैसे मैं पृष्ठ चला रहा हूं और अगर मैं किसी भी तारीख का चयन नहीं करता हूं तो यह nullpointerexception दिखा रहा है।java.util.date को खाली करने के लिए कैसे करें

कोड है:

private java.util.Date date2; 

मुझे लगता है कि चर खाली करने की कोशिश की है, लेकिन यह>

private java.util.Date date2; 

if (date2==null || date2.equals("")) 
date2=""; 

काम नहीं किया हालांकि, प्रारंभ के साथ:

private java.util.Date date2= new java.util.Date(0,0,0); 

उपरोक्त कोड मुझे एक डिफ़ॉल्ट मान देगा जो मुझे नहीं चाहिए।

+0

यह एक बुरा विचार इस तरह बात करने का तरीका बताया है (यानी nullPointerExceptions बनाने): आप अशक्त के लिए जाँच करने के लिए जब भी आप DATE2 का प्रयोग कर एक NullPointerException, जब आपके पृष्ठ को रेंडर तरह से बचने के लिए होगा। – VadymVL

+3

'date2 =" "' काम नहीं करता है, क्योंकि 'date2' एक 'दिनांक' है और 'स्ट्रिंग' नहीं है। आप एक 'स्ट्रिंग' को एक वेरिएबल को असाइन नहीं कर सकते जो 'स्ट्रिंग' नहीं है। साथ ही, 'date2.equals (" ") 'हमेशा' झूठा 'है। – Jesper

+2

* java.util.Date वैरिएबल को खाली करने के लिए * प्रारंभ करने का आपका क्या मतलब है? – Blip

उत्तर

10

java.util.Date भंडार एक तिथि के उदाहरण। तो आप इसमें कुछ भी कैसे स्टोर कर सकते हैं या इसे खाली कर सकते हैं? यह केवल java.util.Date के उदाहरणों के संदर्भों को संग्रहीत कर सकता है। यदि आप इसे null बनाते हैं तो इसका अर्थ है कि यह java.util.Date के किसी भी उदाहरण का जिक्र नहीं कर रहा है।

आपने date2=""; को यह कथन दिया है कि आप String के उदाहरण को संदर्भित करना चाहते हैं जो java.util.Date स्टोर करने का अनुमान है। यह संभव नहीं है क्योंकि जावा मजबूत टाइप की गई भाषा है।

संपादित

टिप्पणी का जवाब देने के लिए तैनात देखने के बाद LastFreeNickname

मैं एक रूप हो रहा है उस तारीख पाठ बॉक्स पाठ बॉक्स में डिफ़ॉल्ट रिक्त द्वारा किया जाना चाहिए, हालांकि, जबकि प्रस्तुत करने डेटा अगर उपयोगकर्ता ने कुछ भी दर्ज नहीं किया है, तो इसे

मुझे सुझाव होगा कि आप जांच सकते हैं अगर टेक्स्टबॉक्स खाली है। और यदि यह रिक्त है, तो आप डिफ़ॉल्ट दिनांक अपने चर या आज की तारीख में संग्रहीत कर सकती है या इसे आवंटित null हो सकता है जैसा कि नीचे दिखाया:

if(textBox.getText() == null || textBox.getText().equals(""){ 
    date2 = null; // For Null; 
    // date2 = new Date(); For Current Date 
    // date2 = new Date(0); For Default Date 
} 

इसके अलावा, मैं जब से तुम एक में कोई दिनांक दर्ज करने के लिए उपयोगकर्ता पूछ रहे हैं मान सकते हैं TextBox, आप TextBox में दर्ज किए गए पाठ को पार्स करने के लिए DateFormat का उपयोग कर रहे हैं।यदि ऐसा है तो आप dateFormat.parse() पर कॉल कर सकते हैं जो ParseException फेंकता है यदि प्रारूप जिस तारीख को लिखा गया था वह गलत है या खाली स्ट्रिंग है। यहाँ catch ब्लॉक में आप नीचे दिए गए शो के रूप में ऊपर बयान डाल सकता है:

try{ 
    date2 = dateFormat.parse(textBox.getText()); 
}catch(ParseException e){ 
    date2 = null; // For Null; 
    // date2 = new Date(); For Current Date 
    // date2 = new Date(0); For Default Date 
} 
+0

'नई तिथि (0)' बहुत उपयोगी थी! – Kruser

1

शून्य मान के साथ आरंभ करने का प्रयास करें।

private java.util.Date date2 = null; 

इसके अलावा private java.util.Date date2 = ""; काम नहीं करेगा के रूप में "" एक श्रृंखला है।

0

यह स्पष्ट नहीं है कि आप अपनी तिथि तर्क कैसे व्यवहार करना चाहते हैं? आमतौर पर डिफ़ॉल्ट व्यवहार से निपटने का एक अच्छा तरीका Null Object pattern है।

+0

मेरे पास एक ऐसा फॉर्म है जिसमें टेक्स्टबॉक्स को डिफ़ॉल्ट रूप से टेक्स्टबॉक्स में खाली होना चाहिए, हालांकि डेटा जमा करते समय उपयोगकर्ता ने कुछ भी दर्ज नहीं किया है, इसे स्वीकार करना चाहिए – 99maas

4

आईएमओ, आप खाली Date(java.util) नहीं बना सकते हैं। आप Date ऑब्जेक्ट null मान के साथ बना सकते हैं और एक शून्य जांच डाल सकते हैं।

Date date = new Date(); // Today's date and current time 
Date date2 = new Date(0); // Default date and time 
Date date3 = null; //Date object with null as value. 
if(null != date3) { 
    // do your work. 
} 
0

तिथि का एक उदाहरण हमेशा एक तारीख प्रतिनिधित्व करता है और खाली नहीं हो सकता। आप "तारीख नहीं है" का प्रतिनिधित्व करने के लिए दिनांक 2 के शून्य मान का उपयोग कर सकते हैं।

if (date2 != null) 
    // print date2 
else 
    // print nothing, or a default value 
संबंधित मुद्दे