华为机试-超长正整数相加

题目描述
请设计一个算法完成两个超长正整数的加法。

接口说明


/*
请设计一个算法完成两个超长正整数的加法。
输入参数:
String addend:加数
String augend:被加数
返回值:加法结果
*/
public String AddLongInteger(String addend, String augend)
{
/*在这里实现功能*/

return null;
}



输入描述:
输入两个字符串数字


输出描述:
输出相加后的结果,string型

输入例子:
99999999999999999999999999999999999999999999999999
1

输出例子:
100000000000000000000000000000000000000000000000000

Java程序实现

  1. import java.util.Scanner;  
  2.   
  3. /** 
  4.  * 超长正整数相加 
  5.  *  
  6.  * @author LiJian 
  7.  * 
  8.  */  
  9. public class Main {  
  10.     @SuppressWarnings("resource")  
  11.     public static void main(String[] args) {  
  12.         // TODO Auto-generated method stub  
  13.         Scanner sc = new Scanner(System.in);  
  14.         String str1 = "";  
  15.         String str2 = "";  
  16.         while (sc.hasNextLine()) {  
  17.             str1 = sc.nextLine();  
  18.             str2 = sc.nextLine();  
  19.             String sResult = AddLongInteger(str1, str2);  
  20.             System.out.println(sResult);  
  21.         }  
  22.     }  
  23.   
  24.     public static String AddLongInteger(String str1, String str2) {  
  25.         if (str1.length() < str2.length()) {  
  26.             String temp = str1;  
  27.             str1 = str2;  
  28.             str2 = temp;  
  29.   
  30.         }  
  31.         char[] charArr1 = str1.toCharArray();  
  32.         char[] charArr2 = str2.toCharArray();  
  33.         int jinWei = 0;  
  34.         int sum = 0;  
  35.         for (int i = charArr1.length - 1, j = charArr2.length - 1; i >= 0; i--) {  
  36.             if (j >= 0) {  
  37.                 sum = Integer.parseInt(charArr1[i] + "") + Integer.parseInt(charArr2[j] + "") + jinWei;  
  38.                 charArr1[i] = String.valueOf(sum % 10).charAt(0);  
  39.                 jinWei = sum / 10;  
  40.                 j--;  
  41.             } else {  
  42.                 sum = Integer.parseInt(charArr1[i] + "") + jinWei;  
  43.                 charArr1[i] = String.valueOf(sum % 10).charAt(0);  
  44.                 jinWei = sum / 10;  
  45.             }  
  46.         }  
  47.         String value = "";  
  48.         for (int i = 0; i < charArr1.length; i++) {  
  49.             value += charArr1[i];  
  50.         }  
  51.         if (jinWei != 0) {  
  52.             return String.valueOf(jinWei) + value;  
  53.         } else {  
  54.             return value;  
  55.         }  
  56.   
  57.     }  
  58.   
  59. }  
原文地址:https://www.cnblogs.com/wwjldm/p/7099206.html