设计思想
从小学阶段的时候,我们就已经学会了如何计算两个整数的加法,一个通用的方法,那就是列竖式。由此得到启示,准备三个数组,数组的长度取两个整数中长度较大的一个加一的长度,为了保证结果能存储下;接下来,将两个整数分别存储在各自的数组中,长度不够的情况在数组最开始的前面补0;最后,从三个数组的最后以为开始向前做运算,当对应下标的和超过9时,初以10将商给它下标减一的位置。
将结果输出,如果第一个位置为0,则跳过不输出。
代码实现
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
//准备数据
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
String s2 = sc.next();
//准备存储结果的数组
int len = s1.length()>s2.length() ? s1.length():s2.length();
int[] a = new int[len+1];
//将第一个数处理后存储到数组中,前面缺的地方补0
int[] a1 = new int[len+1];
char[] c1 = s1.toCharArray();
int b1 = a1.length-1;
for(int i=c1.length-1;i>=0;i--){
a1[b1--] = c1[i]-'0';
}
//将第二个数处理后存储到数组中,前面缺的地方补0
int[] a2 = new int[len+1];
char[] c2 = s2.toCharArray();
int b2 = a2.length-1;
for(int i=c2.length-1;i>=0;i--){
a2[b2--] = c2[i]-'0';
}
//处理最后的结果,倒序求和
for(int i=a.length-1;i>=0;i--){
int t = a1[i]+a2[i]+a[i];
//如果t大于9,则/10的结果赋值给它前面的一位
if(t>9){
a[i-1] = t/10;
}
a[i] = t%10;
}
//控制输出格式,如果第一位为0,则不输出
for(int i=0;i<a.length;i++){
if(i==0 && a[i] == 0){
continue;
}
System.out.print(a[i]);
}
}
}
总结