1. 程式人生 > >大數加法【順序棧】

大數加法【順序棧】

大數加法問題:程式設計實現兩個大數的加法運算

思路:

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