题目描述
请设计一个算法完成两个超长正整数的加法。
接口说明
/*
请设计一个算法完成两个超长正整数的加法。
输入参数:
String addend:加数
String augend:被加数
返回值:加法结果
*/
public String AddLongInteger(String addend, String augend)
{
/在这里实现功能/return null;
}输入描述:
输入两个字符串数字输出描述:
输出相加后的结果,string型示例1
输入
99999999999999999999999999999999999999999999999999
1
输出
100000000000000000000000000000000000000000000000000
实现代码:
package cn.c_shuang.demo75;
import java.util.Scanner;
/**
* 超长正整数相加
* @author Cshuang
*
*/
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String a=in.next();
String b=in.next();
add(a,b);
}
in.close();
}
private static void add(String a, String b) {
char[]ch1=a.toCharArray();
char[]ch2=b.toCharArray();
int c=0;//进位
int len1=ch1.length;
int len2=ch2.length;
int temp = 0;
StringBuilder sb=new StringBuilder();
while(len1>0&&len2>0){
temp = ch1[len1-1]-'0'+ch2[len2-1]-'0'+c;
if(temp>=10){
c=temp/10;
temp%=10;
}else
c=0;
sb.append(temp);
len1--;
len2--;
}
int resLen=len1==0?len2:len1;//多于的部分
char[] resCh=len1==0?ch2:ch1;
while(resLen>0){
temp=resCh[resLen-1]-'0'+c;
if(temp>=10){
c=temp/10;
temp%=10;
}else
c=0;
sb.append(temp);
resLen--;
}
if(c!=0)
sb.append(c);
System.out.println(sb.reverse().toString());
}
}