Java大数相加,救急!!处理不了首位有零的情况!!

# 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]);
        }
    }

https://blog.csdn.net/Zayn123/article/details/84780194

数组固定长度了所以最大的一位如果进位你会少显示一位数
所以最大一位如果进位的话,要把数组扩容一下