java 拆两个字符串进行相加
作者:互联网
场景要求:
例如 String a1=“33333333333333333333344”;
String a2=“98736374848595499383929384”;
两个数相加没有一个可以把这两个数转成整形时候。
实现以下代码的思路:
//先进行截取,把两个数截成3部分(相当于3个数)
//让截取的相同部分的每一位进行相加
//最后在把相同部分相加的结果与截取的第三部分相加,
//其中会涉及相同部分最大项相加结果大于一的情况,会对此处做处理,
//方法为截取的部分最小位直接加一,
//加完一后还会涉及最小为是否大于10
public static String getSum(String s1,String s2){
int a4=0,a2 = 0;
String b33="",cc9 ="",jie;//变量 替换保证大小转换时候存在的问题
List l1 = new ArrayList(),l2 =new ArrayList();
if(s1.length()<s2.length()){
cc9= s2;
s2 = s1;
s1 = cc9;
}
if(s1.length()>s2.length()){
jie = s1.substring(0, s1.toCharArray().length-s2.toCharArray().length>=0?s1.toCharArray().length:s2.toCharArray().length-s1.toCharArray().length-s2.toCharArray().length>=0?s2.toCharArray().length:s1.toCharArray().length);
}else{
jie = s2.substring(0, Math.abs(s1.toCharArray().length-s2.toCharArray().length>=0?s1.toCharArray().length:s2.toCharArray().length-s1.toCharArray().length-s2.toCharArray().length>=0?s2.toCharArray().length:s1.toCharArray().length-1));
}
for(int i =0;i<(s1.toCharArray().length-s2.toCharArray().length>=0?s2.toCharArray().length:s1.toCharArray().length);i++){
int c =Integer.parseInt(String.valueOf(s2.toCharArray()[(s2.length()-i-1)]))+Integer.parseInt(String.valueOf(s1.toCharArray()[(s1.length()-i-1)]))+a2;
a2 = 0;
if(c>=10){
l1.add(c%10);//取于放入。
if((s1.toCharArray().length-s2.toCharArray().length>=0?s2.toCharArray().length:s1.toCharArray().length)-i-1==0){
l1.add(1);
a4 = 1;
}
a2 = 1;
}else{
l1.add(c);
}
}
//长度不相等时候触发次 功能 是将截取的前半部份与1相加放入一个新的集合
//最后会把两个集合整合在一起
if(s2.length()!=s1.length()){
if(a4 == 1){
int a5=1;
for(int i =0;i<jie.length();i++){
if(a5==1){
int c =Integer.parseInt(String.valueOf(jie.toCharArray()[(jie.length()-i-1)]))+1+a2;
l1.remove(l1.size()-1);
a5=0;
}
int c =Integer.parseInt(String.valueOf(jie.toCharArray()[(jie.length()-i-1)]))+a2;
a2 = 0;
if(c>=10){
l2.add(c%10);//取于放入。
if(jie.length()-i-1==0){
l2.add(1);
}
a2 = 1;
}else{
l2.add(c);
}
}
l1.add(l2);
}else{
l2.add(jie);
l1.add(l2);
}
}
for(int b1 =0;b1<l1.toString().split(",").length;b1++){
b33+=l1.toString().split(",")[l1.toString().split(",").length-1-b1];
}
return b33.replace("[", "").replace(" ", "").replace("]", "");
}
HELLO_FANDONGBING
发布了99 篇原创文章 · 获赞 10 · 访问量 5万+
私信
关注
标签:java,String,s2,相加,add,length,toCharArray,字符串,s1 来源: https://blog.csdn.net/qq_30443907/article/details/103973888