实现两个大数的加法计算。该题目需要学生实现3个静态方法:Transform( )、BigNumAdd( )、Display()。
函数接口定义:
public static void Transform(String s1, String s2, int[] a, int[] b) //两个数组的对齐处理
public static int[] BigNumAdd(int[] a, int[] b) //两个数组的加法
public static void Display(int[] a)
注意三个方法的参数!
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
String tempa, tempb;
Scanner input = new Scanner(System.in);
tempa = input.nextLine();
tempb = input.nextLine();
int c = Math.max(tempa.length(), tempb.length());
int[] a = new int[c] ;
int[] b = new int[c];
int[] result = new int[c+1];
Transform(tempa, tempb, a, b);
result = BigNumAdd(a,b);
Display(result);
}
/* 请在这里填写答案 */
}
输入样例:
在这里给出一组输入。例如:
12345
99
输出样例:
在这里给出相应的输出。例如:
12444
注意:只是处理正整数
代码
static void Transform(String sa, String sb, int[] a, int[] b) {
Transform(sa, a);
Transform(sb, b);
}
static void Transform(String source, int[] output) {
int len = output.length;
for(int i = source.length() - 1; i >= 0; i--) {
if(source.charAt(i) >= '0' && source.charAt(i) <= '9') {
output[--len] = source.charAt(i) - '0';
}
else {
output[--len] = 0;
}
}
}
public static int[] BigNumAdd(int[] a, int[] b) {
int[] c = new int[a.length + 1];
for(int i = a.length - 1; i >= 0; i--) {
//将该位已有值,a[i]和b[i]相加
int t = c[i + 1] + a[i] + b[i];
//该位的值
c[i + 1] = t % 10;
//前一位加进位
c[i] += t / 10;
}
return c;
}
public static void Display(int[] a) {
boolean flag = false;
for(int i = 0; i < a.length; i++) {
if(a[i] != 0) {
flag = true;
}
if(flag) {
System.out.print(a[i]);
}
}
System.out.println();
}