大数加法【顺序栈】

版权声明: 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));
	}
}

猜你喜欢

转载自blog.csdn.net/acDream_/article/details/83547073
今日推荐