java - كيف يمكنني تحويل سلسلة إلى BigInteger؟



string (4)

أحاول قراءة بعض الأرقام الكبيرة حقًا من الإدخال القياسي وإضافتها معًا.

ومع ذلك ، لإضافة إلى 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 فقط ، لا أستطيع إضافة أرقام أكبر من قيمة الحد الأقصى الطويل (9223372036854775807).

كلما حاولت إضافة 9223372036854775808 أو أكثر ، أحصل على NumberFormatException (وهو متوقع بالكامل).

هل هناك شيء من هذا القبيل BigInteger.parseBigInteger(String) ؟

https://code.i-harness.com


BigInteger لديه منشئ حيث يمكنك تمرير سلسلة كوسيطة.

حاول أدناه ،

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

باستخدام المنشئ

BigInteger (String val)

يترجم تمثيل سلسلة عشري ل BigInteger إلى BigInteger.

Javadoc


للحلقة حيث تريد تحويل array من strings إلى array من bigIntegers يلي:

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
}

وفقا documentation :

BigInteger (String val)

يترجم تمثيل سلسلة عشري ل BigInteger إلى BigInteger.

هذا يعني أنه يمكنك استخدام String لتهيئة كائن BigInteger ، كما هو موضح في المقتطف التالي:

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




biginteger