大整数的加法运算

设计思想


从小学阶段的时候,我们就已经学会了如何计算两个整数的加法,一个通用的方法,那就是列竖式。由此得到启示,准备三个数组,数组的长度取两个整数中长度较大的一个加一的长度,为了保证结果能存储下;接下来,将两个整数分别存储在各自的数组中,长度不够的情况在数组最开始的前面补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]);
    	}
    }
}

总结


转载请注明出处,谢谢~ --------------------- 本文来自 Slick_kw的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_34399639/article/details/84936044

Slick_kw博客
Slick_kw博客
发布了16 篇原创文章 · 获赞 13 · 访问量 3036

猜你喜欢

转载自blog.csdn.net/qq_34399639/article/details/84936044