我嵌套了循环:

String s1 = "4412";
String s2 = "0123";

int k = 0, l = 0, i3 = 0;

for (int i = s1.length() - 1; i < s1.length(); i--) {

    for (int j = s2.length() - 1; j <= i; j--) {

        k = Integer.parseInt(Character.toString(s1.charAt(i)));
        l = Integer.parseInt(Character.toString(s2.charAt(j)));

        i3 = k + l;

        System.out.println(i3);

    }
}


当我执行该程序时,我得到234作为输出。因为它在s1和s2中取最后一个元素值。 S2继续这样的重复循环:

1
321
2
321
.
.


所以2 + 3,2 + 2,2 + 1像这样工作。但是我期望的是
4412 + 123 = 4535

谁能帮我吗。提前致谢

最佳答案

您可以使用带有反向String的split并像这样循环抛出数组:

String s1 = "4421";
String s2 = "321";
//reverse and split your string
String[] spl1 = new StringBuilder(s1).reverse().toString().split("");//[1,2,4,4]
String[] spl2 = new StringBuilder(s2).reverse().toString().split("");//[1,2,4,4]
String result = "";
int max = spl1.length > spl2.length ? spl1.length : spl2.length;
for (int i = 0; i < max; i++) {
    int k = spl1.length <= i ? 0 : Integer.parseInt(spl1[i]);
    int l = spl2.length <= i ? 0 : Integer.parseInt(spl2[i]);
    result += (k + l) + "";

}
System.out.println(result);//result 2474


这个想法是:


反转您的弦乐12345-> 54321
分割你的弦[5,4,3,2,1]
在数组之间找到最大值
循环抛出数组并进行加法,如果输入不存在,请使用0,spl1.length <= i ? 0 : Integer.parseInt(spl1[i]);
将加法添加到您的结果中。




编辑

Lets back to school

java - Java-用传统方式求和大整数-LMLPHP

您可以改用它,这个想法很简单:

String s1 = "5768956788678907689076890076544765433564376543564";
String s2 = "657687986578905438732902587349320254893";
String[] spl1 = new StringBuilder(s1).reverse().toString().split("");
String[] spl2 = new StringBuilder(s2).reverse().toString().split("");
String result = "";
int max = spl1.length > spl2.length ? spl1.length : spl2.length;
int rest = 0;
int sum;
for (int i = 0; i < max; i++) {
    int k = spl1.length <= i ? 0 : Integer.parseInt(spl1[i]);
    int l = spl2.length <= i ? 0 : Integer.parseInt(spl2[i]);

    sum = k + l + rest;
    if (sum > 9) {
        rest = 1;
        sum = sum - 10;
    } else {
        rest = 0;
    }
    result = (i + 1 == max ? sum + rest * 10 : sum) + result;

}
System.out.println(result);

09-15 20:01