2013-03-30 16 views
39

मैं मानक इनपुट से कुछ वाकई बड़ी संख्याओं को पढ़ने की कोशिश कर रहा हूं और उन्हें एक साथ जोड़ता हूं।मैं स्ट्रिंग को बिगइंटर में कैसे परिवर्तित करूं?

हालांकि, BigInteger में जोड़ने के लिए, मैं उपयोग करने की आवश्यकता BigInteger.valueOf(long);:

private BigInteger sum = BigInteger.valueOf(0); 

private void sum(String newNumber) { 
    // BigInteger is immutable, reassign the variable: 
    sum = sum.add(BigInteger.valueOf(Long.parseLong(newNumber))); 
} 

कि ठीक काम करता है, लेकिन जैसा कि BigInteger.valueOf() केवल एक long लेता है, मैं long के अधिकतम मूल्य से अधिक से अधिक संख्या नहीं जोड़ सकते हैं (9223372036854775807)।

जब भी मैं 9 223372036854775808 या उससे अधिक जोड़ने की कोशिश करता हूं, मुझे नंबरफॉर्मेट एक्सेप्शन (जो पूरी तरह से अपेक्षित है) मिलता है।

क्या BigInteger.parseBigInteger(String) जैसा कुछ है?

उत्तर

87

निर्माता

BigInteger (स्ट्रिंग वैल)

का उपयोग करते हुए एक BigInteger में एक BigInteger की दशमलव स्ट्रिंग प्रतिनिधित्व अनुवाद करता है।

Javadoc

16

documentation के अनुसार:

BigInteger (स्ट्रिंग वैल)

एक BigInteger में एक BigInteger की दशमलव स्ट्रिंग प्रतिनिधित्व अनुवाद करता है।

इसका मतलब है कि आप एक String के रूप में निम्नलिखित स्निपेट में दिखाया गया है का उपयोग एक BigInteger वस्तु प्रारंभ करने में कर सकते हैं,:

sum = sum.add(new BigInteger(newNumber)); 
8

BigInteger निर्माता जहां तर्क के रूप में स्ट्रिंग पारित कर सकते हैं है।

नीचे की कोशिश,

private void sum(String newNumber) { 
    // BigInteger is immutable, reassign the variable: 
    sum = sum.add(new BigInteger(newNumber)); 
} 
5
इसके बजाय valueOf(long) और parse() का उपयोग करने का

, आप सीधे BigInteger निर्माता है कि एक स्ट्रिंग तर्क लेता उपयोग कर सकते हैं:

BigInteger numBig = new BigInteger("8599825996872482982482982252524684268426846846846846849848418418414141841841984219848941984218942894298421984286289228927948728929829"); 

है कि आप वांछित मान देना चाहिए।

0

एक पाश के लिए जहां आप यह करते हैं bigIntegers के array को strings के array कनवर्ट करना चाहते हैं:

String[] unsorted = new String[n]; //array of Strings 
BigInteger[] series = new BigInteger[n]; //array of BigIntegers 

for(int i=0; i<n; i++){ 
    series[i] = new BigInteger(unsorted[i]); //convert String to bigInteger 
} 
संबंधित मुद्दे

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