java实现两个超大数相加,字符串实现

public class BigDataAdd {


    public static String bigDataAdd(String one,String two){

        int longflag=one.length()-two.length();

        String temp="";

        String newone="";

        String newtwo="";

        if(longflag>0){

            temp=one.substring(0,longflag);

            newone=one.substring(longflag,one.length());

            newtwo=two;

        }else{

            temp=two.substring(0,-longflag);

            newone=one;

            newtwo=two.substring(-longflag,two.length());

        }


        char[] onechararray=newone.toCharArray();

        char[] twochararray=newtwo.toCharArray();


        StringBuffer addString=new StringBuffer();

        boolean flag=false;

        for (int i = newone.length()-1; i >=0 ; i--) {

           Integer a=new Integer(onechararray[i]+"" );

           Integer b=new Integer(twochararray[i]+"") ;

           int sum=a+b;

            if(flag){

                sum+=1;

            }

           if(sum>=10){

               addString.append(sum-10);

               flag=true;

           }else{

               addString.append(sum);

               flag=false;

           }

        }

        if(flag){

            char [] tempchararray=temp.toCharArray();

            StringBuffer addStrPre=new StringBuffer();

            boolean flagN=false;

            for (int i = temp.length()-1; i >=0; i--) {

                int value=new Integer(tempchararray[i]+"");

                if(i==temp.length()-1)

                     value+=1;

                if(flagN)

                    value+=1;

                if(value>=10){

                       flagN=true;

                       addStrPre.append(value-10);

                }else{

                    flagN=false;

                    addStrPre.append(temp.charAt(i));

                }

            }

            if(flagN)

                addStrPre.append("1");

            return addStrPre.reverse().toString()+addString.reverse().toString();

        }else {

            return temp+addString.reverse().toString();

        }

    }



    public static void main(String[] args) {

        String one="139439";

        String two="9999999999999999999999283";

        System.out.println(BigDataAdd.bigDataAdd(one,two));

    }


}


转载于:https://my.oschina.net/u/1390040/blog/499032

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值