您的位置:首页 > 编程语言 > Java开发

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

2015-08-29 00:00 429 查看
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));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: