算法原理:
对于大数类的加法,我们平常定义出的int,float,double或者long等数据类型因为内存的限制他所能表示的数字是有一定的范围的,对于大数(也即是数字的取值超出这些类型)的处理,我们通常使用的是将数字转换成字符数组。
Step 1
读取大数,将每一位数字进行a-‘0’运算(a表示每一位的数字)将其转变为字符型数值。
Step 2
比较两个大数的位数,也即长度。较短的那个大数使用‘0’补齐长度
Step 3
遍历整个字符数组,使其对应的每一位相加
Step 4
从最低位进行“满十进一”操作,此时最高位有可能会多出来一位,所以我们在创建加法结果数组时故意多加一位,并根据这一位是否为‘0’决定输出的位数。(当然在c++语言中不必多考虑,因为c++的数组是可以越界的!!!)
Step 5
输出加法结果数组即可。
(Java语言已经写好了大数类的包,直接使用即可,但是应该注意,此时的大数类应该为类Class,而不是一个数值)
程序代码:(感谢不知网名的csdn博客主写的代码,稍微修改了一下!)
import java.util.Scanner;
import java.math.BigInteger;
public class my_bignumber_add {
public static void main(String[] args) {
BigInteger a,b,c;
Scanner cin = new Scanner(System.in);
a = cin.nextBigInteger();
b = cin.nextBigInteger();
c = a.add(b);
System.out.println(a + " + " + b + " = " + c);
}
}