package com.zzq.test;
       public class dsxc {
//两个大数相加
public static int[] executeSum(int[] result , int[] temp){
int add = 0;
int j = temp.length - 1;
for(int i = result.length - 1; i >= 0; --i){
if( j >= 0){
if(temp[j] + result[i] + add >= 10){
int local = temp[j] + result[i] + add - 10 ;
result[i] = local;
add = 1;
}else{
result[i] = temp[j] + result[i] + add;
add = 0;
}
}else{
if(result[i] + add >= 10){
int local = result[i] + add - 10 ;
result[i] = local;
add = 1;
}else{
result[i] = result[i] + add;
add = 0;
}
}
j = --j;
}
return result;
}
public static void main(String[] args) {
String s1 = "88888888";
String s2 = "77777777";
System.out.println("结果:"+execute(s1,s2));
}
//两个大数相乘
public static String execute(Object ji1 , Object ji2){
String sji1 = String.valueOf(ji1);
String sji2 = String.valueOf(ji2);
if(sji1 == null || sji1.length() <=0 ||sji2 == null || sji2.length() <=0){
System.out.println("传入的数据不能为空");
}
String[] arrSji1 = sji1.split("");
String[] arrSji2 = sji2.split("");
int[] arrji1 = getIntArray(arrSji1);
int[] arrji2 = getIntArray(arrSji2);
int[] result = new int[arrji1.length + arrji2.length];
for(int i = arrji1.length - 1; i >= 0; --i){
for(int j = arrji2.length - 1; j >= 0; --j){
int quan = (arrji1.length - 1 - i) + (arrji2.length - 1 - j);
String temp = arrji1[i] * arrji2[j] +"";
for(int k = 0; k < quan; ++k){
temp += "0";
}
String[] arr = temp.split("");
executeSum(result,getIntArray(arr));
}
}
return printIntArray(result);
}
//字符串数组转换int数组
public static int[] getIntArray(String[] param){
int[] result = new int[param.length];
for(int i=0;i<result.length;i++){
result[i]=Integer.parseInt(param[i]);
}
return result;
}
//int数组转换成字符串
public static String printIntArray(int[] param){
StringBuffer sb = new StringBuffer();
for(int i = 0; i < param.length; i++){
sb.append(param[i]+"");
}
return sb.toString().replaceFirst("^0*", "");
}
}
       public class dsxc {
//两个大数相加
public static int[] executeSum(int[] result , int[] temp){
int add = 0;
int j = temp.length - 1;
for(int i = result.length - 1; i >= 0; --i){
if( j >= 0){
if(temp[j] + result[i] + add >= 10){
int local = temp[j] + result[i] + add - 10 ;
result[i] = local;
add = 1;
}else{
result[i] = temp[j] + result[i] + add;
add = 0;
}
}else{
if(result[i] + add >= 10){
int local = result[i] + add - 10 ;
result[i] = local;
add = 1;
}else{
result[i] = result[i] + add;
add = 0;
}
}
j = --j;
}
return result;
}
public static void main(String[] args) {
String s1 = "88888888";
String s2 = "77777777";
System.out.println("结果:"+execute(s1,s2));
}
//两个大数相乘
public static String execute(Object ji1 , Object ji2){
String sji1 = String.valueOf(ji1);
String sji2 = String.valueOf(ji2);
if(sji1 == null || sji1.length() <=0 ||sji2 == null || sji2.length() <=0){
System.out.println("传入的数据不能为空");
}
String[] arrSji1 = sji1.split("");
String[] arrSji2 = sji2.split("");
int[] arrji1 = getIntArray(arrSji1);
int[] arrji2 = getIntArray(arrSji2);
int[] result = new int[arrji1.length + arrji2.length];
for(int i = arrji1.length - 1; i >= 0; --i){
for(int j = arrji2.length - 1; j >= 0; --j){
int quan = (arrji1.length - 1 - i) + (arrji2.length - 1 - j);
String temp = arrji1[i] * arrji2[j] +"";
for(int k = 0; k < quan; ++k){
temp += "0";
}
String[] arr = temp.split("");
executeSum(result,getIntArray(arr));
}
}
return printIntArray(result);
}
//字符串数组转换int数组
public static int[] getIntArray(String[] param){
int[] result = new int[param.length];
for(int i=0;i<result.length;i++){
result[i]=Integer.parseInt(param[i]);
}
return result;
}
//int数组转换成字符串
public static String printIntArray(int[] param){
StringBuffer sb = new StringBuffer();
for(int i = 0; i < param.length; i++){
sb.append(param[i]+"");
}
return sb.toString().replaceFirst("^0*", "");
}
}