java 中的大数之和 [duplicate]

Sum of large numbers in java [duplicate]

提问人:Kornusiap 提问时间:11/13/2023 最后编辑:SörenKornusiap 更新时间:11/13/2023 访问量:59

问:

这个问题在这里已经有答案了:
12天前关闭。

社区在 11 天前审查了是否重新讨论这个问题,并将其关闭:

原始关闭原因未解决

import java.util.Scanner;
import java.math.BigInteger;

public class LargeSum {

    public static void main(String[] args) {
        Scanner inp=new Scanner(System.in);
        int limit=inp.nextInt();
        BigInteger[] arr=new BigInteger[limit];
        for (int i=0; i<limit; i++) 
            arr[i]=new BigInteger(inp.nextLine());  //runtime error
        BigInteger sum=new BigInteger(String.valueOf(arr[0]));
        for (int i=1; i<limit;i++) 
            sum=sum.add(arr[i]);
    }

}

我编写了一个代码来使用 BigInteger 类在 java 中查找用户给定数量的大数字的总和,但我遇到了运行时错误“java.lang.NumberFormatException:零长度 BigInteger”。如何解决此问题? 输入样本:
5
37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676

java.util.scanner biginteger

评论

3赞 LMC 11/13/2023
问题必须提供最小的可重复示例。导致该错误的输入是什么?
0赞 Kornusiap 11/13/2023
第一个 int input 表示用户要输入的数字数量,每个输入的 String 数字都是 50 位数字。输入样本:5 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676
0赞 LMC 11/13/2023
仍然没有一个最小的可重复的例子。输入中的哪一行导致了错误?一个最小的可重复示例应提供一个功能和如何向扫描仪提供输入的描述main()
2赞 aled 11/13/2023
编辑您的问题以添加信息。评论难以阅读,可能会被删除。

答:

0赞 Reilas 11/13/2023 #1

首先前进到下一行。

int limit=inp.nextInt();
inp.nextLine();

或者,使用 Integer#parseInt 方法。

int limit=Integer.parseInt(inp.nextLine());

输出

5
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
74324986199524741059474233309513058123726617309629
91942213363574161572522430563301811072406154908250
23067588207539346171171980310421047513778063246676

272819012982030361314614767301043585006837989465343