2012-03-07 15 views
8

क्या इंटीजर को शून्य करने का कोई तरीका है। शून्य वास्तव में एक स्ट्रिंग है, जिसे मैं अपनी सेवा परत में गुजर रहा हूं जो इसे एक पूर्णांक के रूप में स्वीकार करता है। इसलिए, जब भी मैं एक नल स्ट्रिंग को इंटीजर करने की कोशिश करता हूं, तो यह मुझे अपवाद फेंकता है। लेकिन मुझे पूर्णांक में शून्य डालना है।इंटीजर में एक नल स्ट्रिंग कास्ट करें

धन्यवाद

+1

प्रयोग कर रहे हैं 'Integer.parseInt() 'या सिर्फ कास्टिंग? – Jon

+4

क्या आप कोड में एक साधारण उदाहरण प्रदान कर सकते हैं?'शून्य' जावा में सभी प्रकारों में रहता है, इसलिए बिना किसी समस्या के "स्ट्रिंग" 'null' को" इंटीजर "' null' पर डाला जाना चाहिए। – oconnor0

+0

क्या आप हमें कोड लाइन दिखा सकते हैं जिसका आप उपयोग कर रहे हैं? – aldrin

उत्तर

20

आप प्रयास करें पूर्णांक के लिए स्ट्रिंग से डाली नहीं कर सकता। हालांकि, अगर आप पूर्णांक में स्ट्रिंग परिवर्तित करने के लिए कोशिश कर रहे हैं और यदि आप null स्ट्रिंग्स से निपटने के लिए एक कार्यान्वयन प्रदान करने के लिए है, इस कोड स्निपेट पर एक नज़र डालें, तो:

String str = "..."; 
// suppose str becomes null after some operation(s). 
int number = 0; 
try 
{ 
    if(str != null) 
     number = Integer.parseInt(str); 
} 
catch (NumberFormatException e) 
{ 
    number = 0; 
} 
+2

'अपवाद' पकड़ना आम तौर पर एक अच्छा विचार नहीं है; 'NumberFormatException' और' NullPointerException' को अलग-अलग पकड़ने के लिए बेहतर। –

+1

@ क्रेग्रिंजर आप सही हैं! मैंने तदनुसार अपना कोड बदल दिया। उपयोगी टिप्पणी के लिए धन्यवाद :) – Juvanis

5
String s= ""; 
int i=0; 
i=Integer.parseInt(s+0); 
System.out.println(i); 

इस

+0

यह शानदार है! – tsig

+0

यह 'int.Parse (0 + s) होना चाहिए,' दूसरी तरफ नहीं। यह तब भी काम करेगा जब 's' एक खाली स्ट्रिंग है, लेकिन यदि' s' कहता है ... 11 आपको वर्तमान दृष्टिकोण के साथ 110 मिल जाएगा। – cogumel0

2
इस बारे में

क्या?

private static void castTest() { 
    System.out.println(getInteger(null)); 
    System.out.println(getInteger("003")); 
    int a = getInteger("55"); 
    System.out.println(a); 
} 

private static Integer getInteger(String str) { 
    if (str == null) { 
     return new Integer(0); 
    } else { 
     return Integer.parseInt(str); 
    } 
} 
3

आप स्ट्रिंग से इंटीजर तक नहीं डाले जा सकते हैं।
जावा डेटा प्रकार दो प्रकार के हैं: आदिम और संदर्भ। आदिम प्रकार हैं: बाइट, लघु, int, लंबा, चार, फ्लोट, डबल। संदर्भ प्रकार हैं: कक्षा, इंटरफ़ेस, सरणी।
बाइट -> लघु -> int -> लंबा -> फ्लोट -> डबल। अनुमति है, या कास्टिंग अपने स्वयं के प्रकार या इसके उप-वर्ग या सुपरक्लास प्रकार या इंटरफेस में से एक हो सकता है।
तो यह एक पूर्व है। समारोह के गैर पूर्णांक स्ट्रिंग्स के लिए एक नज़र

public int getInteger(String no) { 
    if (no != null) { 
     return Integer.parseInt(no); //convert your string into integer 
    } else { 
     return 0; // or what you want to return if string is Null 
    } 
} 
-1

ले क्या आप वाकई केवल nulls को संभालने के लिए कर रहे हैं, तो

int i=0; 
i=(str==null?i:Integer.parseInt(str)); 
System.out.println(i); 

यह Numberformat अपवाद होगा

7

आप अपाचे उपयोग कर रहे हैं कॉमन्स, एक सहायक विधि है जो चाल करता है:

NumberUtils.createInteger(myString)

रूप documentation में कहा:

"एक Integer करने के लिए एक String कनवर्ट करते हैं, हेक्स और अष्टाधारी अंकन से निपटने; null देता है यदि स्ट्रिंग null है; NumberFormatException फेंकता है यदि मूल्य परिवर्तित नहीं किया जा सकता है।

+1

क्या यह आपके लिए काम करता है? मैंने इसे एक नल स्ट्रिंग पर आज़माया और यह एक नलपोइंटर एक्सेप्शन फेंक दिया ... –

+0

यह मेरे लिए काम किया। क्या आप सुनिश्चित हैं कि आपका नंबर उपयोग अपाचे कॉमन्स से है और दूसरी लाइब्रेरी नहीं है? –

+0

लेकिन आपको अवगत होना चाहिए कि विधि 'इंटीजर # parseInt()/valueOf() 'लेकिन' इंटीजर # डीकोड() 'को इसके बजाय कॉल नहीं कर रही है! – d56

0
code:application नीचे

प्रयास करें .. 0 वापस आ जाएगी अगर स्ट्रिंग किसी और अशक्त यह int को स्ट्रिंग पार्स जाएगा यदि स्ट्रिंग अकेले एक संख्या में शामिल है

कोड:

(str.equals("null")?0:Integer.parseInt(str)) 
संबंधित मुद्दे