Chen·一梦 2020-09-29 10:58 采纳率: 0%
浏览 133

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]);
        }
    }
  • 写回答

2条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView