Java—用传统方法求和大整数

Java—用传统方法求和大整数,java,arrays,string,int,Java,Arrays,String,Int,我已嵌套for循环: 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)

我已嵌套for循环:

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);

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


有人能帮我吗。提前感谢

您可以使用带反向字符串的拆分和循环抛出数组,如下所示:

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
String s1=“4421”;
字符串s2=“321”;
//倒转并分开你的绳子
字符串[]spl1=新的StringBuilder(s1).reverse().toString().split(“”)//[1,2,4,4]
String[]spl2=新的StringBuilder(s2).reverse().toString().split(“”)//[1,2,4,4]
字符串结果=”;
int max=spl1.length>spl2.length?spl1.length:spl2.length;
对于(int i=0;iint k=spl1.length您可以使用带反向字符串的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
String s1=“4421”;
字符串s2=“321”;
//倒转并分开你的绳子
String[]spl1=新的StringBuilder(s1).reverse().toString().split(“”;/[1,2,4,4]
String[]spl2=新的StringBuilder(s2).reverse().toString().split(“”;/[1,2,4,4]
字符串结果=”;
int max=spl1.length>spl2.length?spl1.length:spl2.length;
对于(int i=0;i
    String s1 = "4412";
    String s2 = "0123";
    int k = 0, l = 0;

    int num1 = 0, num2 = 0, length = 0;
    length = s1.length() > s2.length() ? s1.length() : s2.length();
    for (int i = 0; i < length; i++) {
        if (i < s1.length()) {
            k = Integer.parseInt(Character.toString(s1.charAt(i)));
            num1 = num1 * 10 + k;
        }
        if (i < s2.length()) {
            l = Integer.parseInt(Character.toString(s2.charAt(i)));
            num2 = num2 * 10 + l;
        }
    }
    int result = num1 + num2;
    System.out.println(num1 + "+" + num2 + "=" + result);
String s1=“4412”;
字符串s2=“0123”;
int k=0,l=0;
int num1=0,num2=0,长度=0;
长度=s1.length()>s2.length()?s1.length():s2.length();
for(int i=0;i
试试这些代码

    String s1 = "4412";
    String s2 = "0123";
    int k = 0, l = 0;

    int num1 = 0, num2 = 0, length = 0;
    length = s1.length() > s2.length() ? s1.length() : s2.length();
    for (int i = 0; i < length; i++) {
        if (i < s1.length()) {
            k = Integer.parseInt(Character.toString(s1.charAt(i)));
            num1 = num1 * 10 + k;
        }
        if (i < s2.length()) {
            l = Integer.parseInt(Character.toString(s2.charAt(i)));
            num2 = num2 * 10 + l;
        }
    }
    int result = num1 + num2;
    System.out.println(num1 + "+" + num2 + "=" + result);
String s1=“4412”;
字符串s2=“0123”;
int k=0,l=0;
int num1=0,num2=0,长度=0;
长度=s1.length()>s2.length()?s1.length():s2.length();
for(int i=0;i
那么为什么要标记C???@SouravGhosh我会标记我听说过的每种语言,因为So要求我添加标记!sigh@AjayBrahmakshatriya grrrrrrrrr@SouravGhoshC程序员也可能会研究这类逻辑,也许他们会给出一些解决问题的想法。这就是为什么标记C。
(int j=s2.length()-1、 jSo为什么标记C???@SouravGhosh我会标记我听说过的每种语言,因为SO要求我添加标记!sigh@AjayBrahmakshatriya grrrrrrrrr@SouravGhoshC程序员也可能会研究这类逻辑,也许他们会给出一些解决问题的想法。这就是为什么标记C。
(int j=s2.length()-1、 谢谢你的回答。这里我想加上两个整数4421+321=4535。你在开玩笑吗,那你为什么要这么做并解析字符串?然后用a+b得到@Chocopiesorry的结果,因为它会激怒你。实际上我的想法是加上像int I=5768956788678907689076890076544765433564376543564,int j=6576879865789038732902587这样的大整数349320254893.很明显,它不适合整数,所以我选择了字符串。因此,首先,我尝试用一个小例子让你们理解。检查我的答案@Chocopie,希望这是你们想要做的:)谢谢你的回答。我想在这里加两个整数4421+321=4535。你是在开玩笑吧,那你为什么要这么做并解析字符串?然后用a+b得到@Chocopiesorry的结果,因为它会激怒你。实际上我的想法是加上像int I=5768956788678907689076890076544765433564376543564,int j=6576879865789038732902587493这样的大整数20254893.很明显,它不适合整数,所以我选择了字符串。因此,首先,我尝试用一个小示例让您理解。检查我的答案@Chocopie希望这是您想要做的:)您是否尝试了
string s1=“5768956788678907689076890076544765433564376543564”;string s2=“657687986578903873290258749320254893”;
?为此,您可以使用BigInteger,无需逐字符分析字符串。没有BigInteger不足以解决此问题。您尝试过吗?您尝试过使用
字符串s1=“5768956788678907689076890076544765433564376543564”;字符串s2=“65768798657890543873290258749320254893”吗;
?为此,您可以使用BigInteger,无需逐个字符解析字符串。no BigInteger不足以解决此问题。您尝试过吗?