मेरे पास स्ट्रिंग चर नामक स्ट्रिंग वैरिएबल को पार्स करने के लिए निम्न कोड है।संख्याफॉर्मैट जावा का अजीब व्यवहार
NumberFormat formatter = NumberFormat.getInstance();
Number number = formatter.parse(str);
मैं अपवाद को पकड़ना चाहता हूं जब स्ट्रेट केवल इसे सत्यापित करने के लिए संख्या नहीं है। मेरी समस्या यह है कि यह हमेशा ParseException अपेक्षित फेंकता नहीं है। जब स्ट्रिंग स्ट्र एक संख्या से शुरू होता है लेकिन फिर वर्ण होते हैं तो ऐसा लगता है कि स्ट्रिंग के पहले अक्षर मिलते हैं और उन्हें एक संख्या के रूप में पार्स करते हैं।
उदाहरण के लिए:
- अगर str = "A10" फिर एक ParseException फेंक दिया जाता है
- अगर str = "10A" तो कोई अपवाद नहीं फेंक दिया और संख्या = 10
मैं उपयोग नहीं कर सकते Double.parseDouble (str) क्योंकि str में अल्पविराम और अंक 1000.98 हो सकते हैं और यह प्रारूप इस विधि से नहीं समझा जाता है।
ऐसा क्यों हो रहा है? क्या मैं इसे किसी अन्य तरीके से मान्य कर सकता हूं? धन्यवाद
मेरा मतलब नहीं था कि NumberFormat के व्यवहार गलत था, लेकिन मैं एपीआई गलत समझा था। मैंने सोचा था कि स्थिति इंगित करना था जब तक कि मैं कौन सा चरित्र स्ट्रिंग को पार्स करना चाहता था। अब मैं समझता हूं कि यह इस तरह से क्यों डिजाइन किया गया है। आपके सभी एवरों के लिए धन्यवाद। – Javi