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));
}
}