2012-07-02 19 views
5

के साथ पार्सिंग संख्या क्या कोई मुझे समझा सकता है कि निम्न कोड इस आउटपुट को क्यों देता है?नकारात्मक प्रत्यय

1.2 
null 

निम्नलिखित कोड चल रहा है:

String positive = "1.2+"; 
String negative = "1.2-"; 
DecimalFormat format = new DecimalFormat("0.0"); 
format.setPositiveSuffix("+"); 
format.setNegativeSuffix("-"); 
format.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US)); 
System.out.println(format.parse(positive, new ParsePosition(0))); 
System.out.println(format.parse(negative, new ParsePosition(0))); 

यह हालांकि काम करता है, लेकिन मैं पैटर्न की पुनरावृत्ति पसंद नहीं है:

String positive = "1.2+"; 
String negative = "1.2-"; 
DecimalFormat format = new DecimalFormat("0.0+;0.0-"); 
format.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US)); 
System.out.println(format.parse(positive, new ParsePosition(0))); 
System.out.println(format.parse(negative, new ParsePosition(0))); 

नहीं करने के लिए इस्तेमाल किया जा करने का इरादा प्रत्यय है पार्स करने?

+0

पार्स पूरी स्ट्रिंग का उपभोग करने की गारंटी नहीं है। जब यह एक चरित्र प्राप्त होता है तो यह रुक जाएगा, यह नहीं जानता कि इसके साथ क्या करना है। –

+0

@ पीटर लेवर मुझे पता है, लेकिन मैंने सोचा कि मैंने यह बताया है कि जब मैं प्रत्यय सेट करता हूं तो क्या करना है? और यह क्यों संभालता है + लेकिन नहीं -? –

+0

@ पीटर Lawrey मैं यह भी मानता हूं कि दूसरा कोड धीमा है, क्योंकि इसे पूरी स्ट्रिंग को दो बार पार्स करने की आवश्यकता होगी? –

उत्तर

2

जावाडोक में विनिर्दिष्ट:

नकारात्मक subpattern वैकल्पिक है; अनुपस्थित है, तो सकारात्मक subpattern स्थानीय ऋण चिह्न के साथ उपसर्ग ('-' अधिकांश स्थानों में)

अपने उदाहरण में, पार्सर इंतज़ार कर रहा है "-1.2-" है, तो आप इस लाइन को जोड़ने के लिए है:

format.setNegativePrefix(""); 

एक अच्छा दिन है!

+0

क्या आप उस कोड को आजमाते हैं? मैंने इसे पोस्ट करने से पहले भी कोशिश की, –

+0

काम नहीं किया, कोशिश की, और यहां यह काम करता है (जेआरई 1.6.0_22) – cporte

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