超长整数加法算法实现(不调用java.math.*;)
public class MathAdd {public static void main(String[] args){
String addA="30812";
String addB="208";
System.out.println(addA " " addB "=" strvalue(addA,addB));
}
public static String strvalue(String addA,String addB){
String strvalue="";
int lenA=addA.length();
int lenB=addB.length();
int templen=0;
//调整长度相同
if(lenA>=lenB){
templen=lenA-lenB;
addB=maxlen(addB,templen);
}else{
templen=lenB-lenA;
addA=maxlen(addA,templen);
}
char addcharA[]=addA.toCharArray();
char addcharB[]=addB.toCharArray();
int len=addcharA.length;
int valueC[]=new int;
for(int i=0;i<len;i){
int a=Integer.parseInt(String.valueOf(addcharA));
int b=Integer.parseInt(String.valueOf(addcharB));
valueC=a b;
}//每项相加存储
int tmp=0;
//处理进位
for(int i=valueC.length-1;i>=0;i--){
if(valueC>=10){
strvalue=String.valueOf(valueC tmp-10) strvalue;
tmp=valueC/10;
}else{
strvalue=String.valueOf(valueC tmp) strvalue;
tmp=0;
}
}
return strvalue;
}
//调整长度,使其长度一样
private static String maxlen(String str,int templen){
String strmax=null;
StringBuffer buff=new StringBuffer();
for(int i=0;i<templen;i){
buff.append("0");
}
strmax=buff.toString() str;
return strmax;
}
}
页:
[1]