大数相加

来源:互联网 发布:Java中函数重载的条件 编辑:程序博客网 时间:2024/05/22 06:04
<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("参数为null\n");}}public static void main(String[] args) {// TODO Auto-generated method stubbigDataAdd("", "");bigDataAdd(" "," ");bigDataAdd("-1214 fe AGE","123 456 789 ");bigDataAdd("1234567890", "0987654321");}}

参数为null
参数中含有非法字符!
参数中含有非法字符!
1234567890 0987654321和为10位长
2222222211
                                             
0 0
原创粉丝点击