大数相乘java代码-千里之外张天机

package com.zzq.test;


&nbsp &nbsp &nbsp &nbsppublic 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*", "");
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值