我嵌套了循环:
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:
您可以改用它,这个想法很简单:
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);