java 大数实现_Java实现大数计算

public class BigNumPlus {

public static void main(String[] args) {

String var1 = "429825736873";

String var2 = "92630865109731";

String result = getResult(var1,var2);

System.out.println(result);

}

public static String getResult(String var1, String var2) {

int maxLength = Math.max(var1.length(), var2.length()) + 1;

if (!isNumberStr(var1) || !isNumberStr(var2)) {

//System.out.println("目标字符串包含非数字,无法计算");

return "目标字符串包含非数字,无法计算";

}

int[] tmp1 = new int[maxLength];

for (int i = 0; i < var1.length(); i++) {

tmp1[i] = var1.charAt(var1.length() - 1 - i) - '0'; // - ‘0’ :将char 转换为int

}

int[] tmp2 = new int[maxLength];

for (int j = 0; j < var2.length(); j++) {

tmp2[j] = var2.charAt(var2.length() - 1 - j) - '0';

}

int[] result = new int[maxLength];

for (int k = 0; k < result.length; k++) {

int temp = result[k];

temp += tmp1[k];

temp += tmp2[k];

if (temp >= 10) {

temp = temp % 10;

result[k + 1] = 1;

}

result[k] = temp;

}

StringBuilder sb = new StringBuilder();

boolean findLast = false;

for (int p = maxLength - 1; p >= 0; p--) {

if (!findLast) {

if (result[p] == 0) {

continue;

}

findLast = true;

}

sb.append(result[p]);

}

return sb.toString();

}

private static boolean isNumberStr(String var1) {

/**

* //方法一: //使用JAAVA自带的函数 // for(int i = 0 ; i< var1.length();i++) { for(int i =

* var1.length();--i>0;) { if(!Character.isDigit(var1.charAt(i))) { return

* false; } } return true;

*

*/

// 方法二:

// 速度最快 正则

Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");

return pattern.matcher(var1).matches();

/**

* //方法三: Pattern pattern = Pattern.compile("[0-9]*"); return

* pattern.matcher(var1).matches();

*

*/

/**

* //方法四:

*

* if(var1 != null && !"".equals(var1.trim())) return var1.matches("^[0-9]*$");

* else return false;

*

*/

/**

* //方法五: for(int i=var1.length();--i>0;){ int chr = var1.charAt(i); if(chr < 48

* || chr>57) return false; } return true;

*

*/

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值