大數加法【順序棧】
阿新 • • 發佈:2018-10-31
大數加法問題:程式設計實現兩個大數的加法運算
思路:
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)); } }