版权声明: https://blog.csdn.net/acDream_/article/details/83547073
大数加法问题:编程实现两个大数的加法运算
思路:
1.根据加法的规则我们都是从个位开始加的,所以这里可以使用栈
2.记录进位,下次相加的时候加上
3.若进位最后还有剩余,要添加到字符串中
4.逆序输出
package 大数加法;
import java.util.Scanner;
public class BigIntegerDemo {
public static String BigIntegerAdd(String A,String B) {
int lengthA = A.length()-1;
int lengthB = B.length()-1;
StringBuffer buffer = new StringBuffer();//存放结果的栈
int temp = 0;//存放进制
while(lengthA>=0 && lengthB>=0) {
int result = Integer.valueOf(String.valueOf(A.charAt(lengthA)))+Integer.valueOf(String.valueOf(B.charAt(lengthB)))+temp;
buffer.append(result%10);
temp = result/10;
lengthA--;
lengthB--;
}
while(lengthA>=0) {
int result = temp+ Integer.valueOf(String.valueOf(A.charAt(lengthA)));
buffer.append(result%10);
temp = result/10;
lengthA--;
}
while(lengthB>=0) {
int result = temp+ Integer.valueOf(String.valueOf(B.charAt(lengthB)));
buffer.append(result%10);
temp = result/10;
lengthB--;
}
if(temp!=0) {
buffer.append(temp);
}
return buffer.reverse().toString();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String A = in.next();
String B = in.next();
System.out.println(BigIntegerAdd(A, B));
}
}