超长数字串累加

控制台数据需要累加的数字串个数及数字串,计算成累加和并输出

5
1111111111111111111111111111
23413412323452345
2222222222222222222
6666666666666666666666
44444444444444444444444444

方法一:使用java api

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String result="";
        int n = sc.nextInt();
        for(int i = 0; i < n; i++){
            String input=sc.next();
            if(result.equals("")) {
                result=input;
            }
            else {
                BigInteger b1=new BigInteger(result);
                BigInteger b2=new BigInteger(input);
                result=b1.add(b2).toString();
            }
        }
        System.out.println(result);
    }

方法二:

  • 1、读取输入数据
  • 2、循环相加两数,获取输入最长数据的长度,不足最长长度的数字串前导补零
  • 3、两长整形数字的字串从个位开始,向十位,百位....循环相加
  • 4、并把上次的十位进数加入本次个位数,再以字符串形式组合
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String result="";
        int n = sc.nextInt();
        for(int i = 0; i < n; i++){
            String input=sc.next();
            if(result.equals("")) {
                result=input;
            }
            else {
                result=addLong(result,input);
            }
        }
        System.out.println(result);
    }

    private static String addLong(String n1, String n2) {
        
        int n1Length=n1.length();
        int n2Length=n2.length();
        int maxLength=n1Length>n2Length?n1Length:n2Length;
        for(int i=0;i-1;i--) {
            int v1=Integer.parseInt(String.valueOf(n1.charAt(i)));
            int v2=Integer.parseInt(String.valueOf(n2.charAt(i)));
            int v=v1+v2;
            gs=v%10;
            addResult=(gs+js)+addResult;
            js=v/10;
        }
        
        if(js>0) {
            addResult=String.valueOf(js)+addResult;
        }
        return addResult;
    }

你可能感兴趣的:(超长数字串累加)