大数相加
发布时间:2020-12-14 03:03:48 所属栏目:大数据 来源:网络整理
导读:pre name="code" class="java"package com.zhiru;/* * 大数加法。 */public class BigDataAdd {public static boolean isDigit(String s) {int i = 0;boolean res = false;while (i s.length()) {char x = s.charAt(i);if (x = '0' x = '9') {i++;res = true
<pre name="code" class="java">package com.zhiru; /* * 大数加法。 */ public class BigDataAdd { public static boolean isDigit(String s) { int i = 0; boolean res = false; while (i < s.length()) { char x = s.charAt(i); if (x >= '0' && x <= '9') { i++; res = true; } else { res = false; break; } } return res; } public static void bigDataAdd(String a,String b) { int l1 = a.length(); int l2 = b.length(); if ((a != null && l1 > 0) && (b != null && l2 > 0)) { int maxLen = l1 > l2 ? l1 : l2; int k = maxLen; if (isDigit(a) && isDigit(b)) { int[] a1 = new int[maxLen + 1]; int[] a2 = new int[maxLen + 1]; for (int i = k,j = l1 - 1; j >= 0; i--,j--) { a1[i] = a.charAt(j) - '0'; } for (int m = k,n = l2 - 1; n >= 0; m--,n--) { a2[m] = b.charAt(n) - '0'; } for (int p = k; p > 0; p--) { a1[p] += a2[p]; if (a1[p] >= 10) { a1[p] -= 10; a1[p - 1]++; } } if (a1[0] != 0) { System.out.print(a + " " + b + "和为" + (k + 1) + "位长n"); for (int i = 0; i <= k; i++) { System.out.print(a1[i]); } } else { System.out.print(a + " " + b + "和为" + (k) + "位长n"); for (int i = 1; i <= k; i++) { System.out.print(a1[i]); } } } else{ System.out.print("参数中含有非法字符!n"); } } else { System.out.print("参数为nulln"); } } public static void main(String[] args) { // TODO Auto-generated method stub bigDataAdd("",""); bigDataAdd(" "," "); bigDataAdd("-1214 fe AGE","123 456 789 "); bigDataAdd("1234567890","0987654321"); } }参数为null 参数中含有非法字符! 参数中含有非法字符! 1234567890 0987654321和为10位长 2222222211 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |