求解两个较大的数,有两个数组存放两个较大的数(一个数组位Array[]只存储一个整数),求两个数组的和。为何我的程序输出为零,求解释。。
package mid.autumn;public class BigCal { public int[] cal(int[] x, int[] y) {
int[] z = new int[Math.max(x.length, y.length)];
int m = x.length - 1;
int n = y.length - 1;
int flag = 0;
int k = z.length - 1;
for (int i = z.length - 1; m == 0 || n == 0; i--) {
if (flag == 0) {
z[i] = x[m] + y[n];
} else if (flag == 1) {
z[i] = x[m] + y[n] + 1;
flag = 0;
}
if (z[i] >= 10) {
z[i] = z[i] % 10;
flag = 1;
}
m--;
n--;
k = i;
}
if (m == 0) {
for (k = k - 1; k >= 0; k--) {
if (flag == 0) {
z[k] = y[n];
} else {
z[k] = y[n] + 1;
flag = 0;
}
if (z[k] >= 10) {
z[k] = z[k] % 10;
flag = 1;
}
n--;
}
}
if (n == 0) {
for (k = k - 1; k >= 0; k--) {
if (flag == 0) {
z[k] = x[m];
} else {
z[k] = x[m] + 1;
flag = 0;
}
if (z[k] >= 10) {
z[k] = z[k] % 10;
flag = 1;
}
m--;
}
}
return z;
}
}下面是主类,package mid.autumn;/**
*
* @author Administrator
*/
public class main { public static void main(String[] args) {
BigCal b = new BigCal();
int[] x = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] y = {2, 5, 9, 7, 6};
int[] p = b.cal(x, y);
for (int t : p) {
System.out.println(t);
}
}
}
package mid.autumn;public class BigCal { public int[] cal(int[] x, int[] y) {
int[] z = new int[Math.max(x.length, y.length)];
int m = x.length - 1;
int n = y.length - 1;
int flag = 0;
int k = z.length - 1;
for (int i = z.length - 1; m == 0 || n == 0; i--) {
if (flag == 0) {
z[i] = x[m] + y[n];
} else if (flag == 1) {
z[i] = x[m] + y[n] + 1;
flag = 0;
}
if (z[i] >= 10) {
z[i] = z[i] % 10;
flag = 1;
}
m--;
n--;
k = i;
}
if (m == 0) {
for (k = k - 1; k >= 0; k--) {
if (flag == 0) {
z[k] = y[n];
} else {
z[k] = y[n] + 1;
flag = 0;
}
if (z[k] >= 10) {
z[k] = z[k] % 10;
flag = 1;
}
n--;
}
}
if (n == 0) {
for (k = k - 1; k >= 0; k--) {
if (flag == 0) {
z[k] = x[m];
} else {
z[k] = x[m] + 1;
flag = 0;
}
if (z[k] >= 10) {
z[k] = z[k] % 10;
flag = 1;
}
m--;
}
}
return z;
}
}下面是主类,package mid.autumn;/**
*
* @author Administrator
*/
public class main { public static void main(String[] args) {
BigCal b = new BigCal();
int[] x = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] y = {2, 5, 9, 7, 6};
int[] p = b.cal(x, y);
for (int t : p) {
System.out.println(t);
}
}
}
有一种简单有效的方法是使用BigInteger
请参见大师们的杰作:
http://topic.csdn.net/u/20070711/17/1c526e7c-85f7-494c-9c98-5754029bcfe4.html
不像C语言,java中的数组是一个对象
请使用BigInteger实现大整数相加