大数相加
发布时间:2020-12-14 03:05:03 所属栏目:大数据 来源:网络整理
导读://大数相加,这两天就搞大数了,呼呼,优化的还行public class BIG {public static void main(String[] args) {String a = "12345678988555111";String b = "99945684641111";BigAdd bigAdd = new BigAdd();int[] add = bigAdd.add(a,b);for (int i : add) {Sys
//大数相加,这两天就搞大数了,呼呼,优化的还行 public class BIG { public static void main(String[] args) { String a = "12345678988555111"; String b = "99945684641111"; BigAdd bigAdd = new BigAdd(); int[] add = bigAdd.add(a,b); for (int i : add) { System.out.print(i); } } } class BigAdd{ public int[] add(String a,String b){ int jw = 0,num1,num2;//jw:进位 String addZero = "0"; int la = a.length(); int lb = b.length(); int l = la>lb?la:lb;//记录较长的数的长度l,确定结果数组长度 int[] arr = new int[l+1];//数组长度:两个数相加的最大长度l+1 //短数高位补0使位数相同 for (int i = 0; i < Math.abs(la-lb); i++) { if(la>lb){ b = addZero + b; }else if(la<lb){ a = addZero + a; } } //共l次循环,对应位相加,结果从arr[l]赋到a[1]. for (int i = l-1; i >= 0; i--) { num1 = a.charAt(i)-'0'; num2 = b.charAt(i)-'0'; arr[i+1] = (num1+num2+jw)>9?num1+num2+jw-10:num1+num2+jw; jw = num1+num2+jw>9?1:0; } //a[0]为最高位,为0或1. arr[0] = jw==1?1:0; return arr; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |