# 6-3 大数相加 (10分)
实现两个大数的加法计算。该题目需要学生实现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
public static void Transform(String s1, String s2, int[] a, int[] b)
{
if (s1.length() > s2.length())
{
for (int i = 0; i < s1.length(); i++)
{
char ch = s1.charAt(i);
String cw = String.valueOf(ch);
a[i] = Integer.parseInt(cw);
}
for (int j = 0; j < s1.length() - s2.length(); j++)
{
b[j] = 0;
}
for (int k = 0; k < s2.length() ; k++)
{
char ch1 = s2.charAt(k);
String cw1 = String.valueOf(ch1);
b[s1.length()-s2.length()+k] = Integer.parseInt(cw1);
}
}
if (s1.length() < s2.length())
{
for (int i = 0; i < s2.length(); i++)
{
char ch = s2.charAt(i);
String cw = String.valueOf(ch);
b[i] = Integer.parseInt(cw);
}
for (int j = 0; j < s2.length() - s1.length(); j++)
{
a[j] = 0;
}
for (int k = 0; k < s1.length() ; k++)
{
char ch1 = s1.charAt(k);
String cw1 = String.valueOf(ch1);
a[s2.length() - s1.length()+k] = Integer.parseInt(cw1);
}
}
if (s1.length() == s2.length())
{
for (int i = 0; i < s1.length(); i++)
{
char ch = s1.charAt(i);
String cw = String.valueOf(ch);
a[i] = Integer.parseInt(cw);
}
for (int i = 0; i < s2.length(); i++)
{
char ch = s2.charAt(i);
String cw = String.valueOf(ch);
b[i] = Integer.parseInt(cw);
}
}
}
public static int[] BigNumAdd(int[] a, int[] b)
{
int fh = 0;
for (int i = a.length-1; i >= 0; i--)
{
a[i] = a[i] + b[i] + fh;
if (a[i] < 10)
{
fh = 0;
}
if (a[i] >= 10)
{
a[i] = a[i] - 10;
fh = 1;
}
}
int cnt = 1;
int i = 0;
while (a[i] == 0)
{
for (int j = 0; j < a.length-cnt; j++)
{
a[j] = a[j+1];
}
a[a.length-cnt] = '\0';
cnt++;
}
return a;
}
public static void Display(int[] a)
{
for (int i = 0; i < a.length; i++)
{
System.out.print(a[i]);
}
}