2009-03-14 11 views
26

ग्रीटिंग्स,मैं कैसे बता सकता हूं कि जावा पूर्णांक शून्य है या नहीं?

मैं यह पुष्टि करने की कोशिश कर रहा हूं कि मेरा पूर्णांक शून्य है या नहीं। यदि ऐसा है, तो मुझे उपयोगकर्ता को मूल्य दर्ज करने के लिए संकेत देना होगा। मेरी पृष्ठभूमि पर्ल है, इसलिए मेरा पहला प्रयास इस तरह दिखता है:

int startIn = Integer.parseInt (startField.getText()); 

if (startIn) { 
    JOptionPane.showMessageDialog(null, 
     "You must enter a number between 0-16.","Input Error", 
     JOptionPane.ERROR_MESSAGE);     
} 

यह काम नहीं करता है, क्योंकि जावा बूलियन तर्क उम्मीद कर रही है।

पर्ल में, मैं उपयोग कर सकते हैं "मौजूद है" जाँच करने के लिए है कि क्या हैश/सरणी तत्वों के साथ डेटा होते हैं:

@items = ("one", "two", "three"); 
#@items =(); 

if (exists($items[0])) { 
    print "Something in \@items.\n"; 
} 
else { 
    print "Nothing in \@items!\n"; 
} 

जावा में इस के लिए एक रास्ता वहाँ है? आपके सहयोग के लिए धन्यवाद!

यिर्मयाह

पीएस पर्ल exists जानकारी।

+0

क्या यह वास्तव में दो अलग-अलग प्रश्न हैं? किसी कंटेनर के उपयोग के पहले उदाहरण के साथ क्या करना है? –

उत्तर

41

parseInt() अगर पार्सिंग सफलतापूर्वक पूर्ण नहीं हो पाती है तो बस अपवाद फेंकने जा रहा है। आप इसके बजाय Integers, संबंधित ऑब्जेक्ट प्रकार का उपयोग कर सकते हैं, जो चीजों को थोड़ा क्लीनर बनाता है।

Integer s = null; 

try { 
    s = Integer.valueOf(startField.getText()); 
} 
catch (NumberFormatException e) { 
    // ... 
} 

if (s != null) { ... } 

खबरदार आप parseInt() उपयोग करने का निर्णय करते हैं: तो आप शायद के करीब कुछ चाहते हैं! parseInt() अच्छा अंतर्राष्ट्रीयकरण का समर्थन नहीं करता है, तो आप और भी अधिक हुप्स के माध्यम से कूद करने के लिए है:

try { 
    NumberFormat nf = NumberFormat.getIntegerInstance(locale); 
    nf.setParseIntegerOnly(true); 
    nf.setMaximumIntegerDigits(9); // Or whatever you'd like to max out at. 

    // Start parsing from the beginning. 
    ParsePosition p = new ParsePosition(0); 

    int val = format.parse(str, p).intValue(); 
    if (p.getIndex() != str.length()) { 
     // There's some stuff after all the digits are done being processed. 
    } 

    // Work with the processed value here. 
} catch (java.text.ParseFormatException exc) { 
    // Something blew up in the parsing. 
} 
+11

क्या आप सिर्फ ऐसी भाषा से प्यार नहीं करते हैं जिससे आप इतने सारे अपवादों को पकड़ सकें ताकि आप उन्हें अनदेखा कर सकें :) – mpeters

+1

सचमुच, मुझे अपवाद को पकड़ने के बजाय मजबूर होना पड़ेगा और जब मेरा ढेर विशाल हो जाए मुझे पता होना चाहिए कि मैं बहुत समय पहले बेवकूफ था। एकदम मेरे विचार। – Android334

3

int मूल्य प्रकार के होते हैं; वे null कभी नहीं हो सकते हैं। इसके बजाए, अगर पार्सिंग विफल हो गई, parseIntNumberFormatException फेंक देगा जिसे आपको पकड़ने की आवश्यकता है।

8

इस प्रयास करें:

Integer startIn = null; 

try { 
    startIn = Integer.valueOf(startField.getText()); 
} catch (NumberFormatException e) { 
    . 
    . 
    . 
} 

if (startIn == null) { 
    // Prompt for value... 
} 
0

मुझे नहीं लगता कि आप उपयोग कर सकते हैं पर्ल में एक पूर्णांक पर "मौजूद है", केवल अपने पसंदीदा संग्रहों पर। क्या आप पर्ल में आपका क्या मतलब है इसका एक उदाहरण दे सकते हैं जो जावा में आपके उदाहरण से मेल खाता है।

हैश तत्व या सरणी तत्व निर्दिष्ट करने वाली अभिव्यक्ति को देखते हुए, यदि हैश या सरणी में निर्दिष्ट तत्व प्रारंभ किया गया है, भले ही संबंधित मान अपरिभाषित हो, भले ही सही हो।

यह इंगित करता है कि यह केवल हैश या सरणी तत्वों पर लागू होता है!

+0

मैं काफी सहमत हूं। मेरे पर्ल उदाहरण में मैंने एक सरणी का उपयोग किया और फिर यह जांचने के लिए मौजूद है कि सरणी में किसी तत्व में सामग्री है या नहीं। जवाब के लिए धन्यवाद। –

2

किसी भी तरह से स्केलर के लिए कोई भी exists है, वैसे भी। पर्ल रास्ता

defined($x) 

है और बराबर जावा

anInteger != null 

है उन समकक्ष हैं।

exists $hash{key} 

जावा

map.containsKey("key") 

अपने उदाहरण से की तरह है, मुझे लगता है कि आप

के लिए देख रहे हैं (startin! = नल) {...

2

मेरे लिए केवल Integer.toString() विधि का उपयोग करके मेरे लिए ठीक काम करता है। यदि आप शून्य हैं तो आप इसे बहुत बदलना चाहते हैं। नीचे उदाहरण:

private void setCarColor(int redIn, int blueIn, int greenIn) 
{ 
//Integer s = null; 
if (Integer.toString(redIn) == null || Integer.toString(blueIn) == null ||  Integer.toString(greenIn) == null) 
0

इससे मदद मिलनी चाहिए।

Integer startIn = null; 

// (optional below but a good practice, to prevent errors.) 
boolean dontContinue = false; 
try { 
    Integer.parseInt (startField.getText()); 
} catch (NumberFormatException e){ 
    e.printStackTrace(); 
} 

// in java = assigns a boolean in if statements oddly. 
// Thus double equal must be used. So if startIn is null, display the message 
if (startIn == null) { 
    JOptionPane.showMessageDialog(null, 
     "You must enter a number between 0-16.","Input Error", 
     JOptionPane.ERROR_MESSAGE);        
} 

// (again optional) 
if (dontContinue == true) { 
    //Do-some-error-fix 
} 
+0

(बहुत जोड़ने वाला स्रोत कोड आपको इसे 4 रिक्त स्थान या एक टैब के साथ इंडेंट करना होगा।) – kay

+0

@ के: रिक्त स्थान या टैब? यही सवाल है: पी –

संबंधित मुद्दे

 संबंधित मुद्दे