Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将两个int数组值相加?_Java_Arrays_For Loop - Fatal编程技术网

Java 如何将两个int数组值相加?

Java 如何将两个int数组值相加?,java,arrays,for-loop,Java,Arrays,For Loop,我尝试将两个int数组相加以得到一个和。第一个数组包含000000000000000123456789,第二个数组包含000111111111。总数应为1111111234567900。我还尝试在不使用BigInteger或BigDecimal的情况下执行此操作。 for(int i=0; i<number1.length;i++){ add= number1[i]+number2[i]; if(plus>=10){ sum[i-1]+=add/10

我尝试将两个int数组相加以得到一个和。第一个数组包含000000000000000123456789,第二个数组包含000111111111。总数应为1111111234567900。我还尝试在不使用BigInteger或BigDecimal的情况下执行此操作。

for(int i=0; i<number1.length;i++){
   add= number1[i]+number2[i];
   if(plus>=10){    
       sum[i-1]+=add/10;
       sum[i] = add%10;
    }else{
        sum[i]=add;
    }                   
}
for(inti=0;i=10){
总和[i-1]+=相加/10;
总和[i]=加上%10;
}否则{
总和[i]=相加;
}                   
}

此时产生的输出为0001111111111112345678100。如何修复代码,使8变为9?

此代码应能正确地将大于10的数字向上移动,并保留较小的数字

int[] result = new int[number1.length+1];
        for (int i=number1.length-1; i>=0;i--){
            result[i+1] = number1[i] + number[i] + result[i+1];
            if(result[i+1] >= 10){
                result[i+1] -= 10; // it could never be more than 20 so this is ok and if it is 10 than it will still carry over to the next
                result[i] = 1; // the ten carried to the next one
            }
        }
与Seek Addo的答案类似,但避免了在代码中发现的错误,这些错误会阻止应用程序正确地携带数字

这是我能想到的最简洁的方法,应该能给出正确的答案

[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7,9,0,0]或1111111111234567900


这有点管用。我可以想到这样的一些情况,比如如果数组像{9,9,9}和{9,9,9},
result
将是{9,9,8},而不是{1,9,9,8}这是一个小补丁,将作为活动留给读者。

public static void main(String []args){
    int[] number1 = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9};
    int[] number2 = {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};

    int carry = 0, sum = 0;

    int[] result = new int[number1.length];
    for (int i = number1.length - 1; i >= 0 ; i--) {
        sum = number1[i] + number2[i] + carry;
        result[i] = sum%10;
        carry = sum/10;
    }
    // [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 9, 0, 0]                                                                   
    System.out.println(Arrays.toString(result)); 
 }
试试这个

        int[] number = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9};
        int[] number2 = {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
        int[] result = new int[number.length+1];
        int carry = 0;
        for (int i = number.length - 1; i >= 0; i--) {
            result[i+1] = number[i] + number2[i] + carry;
            if (result[i+1] > 9) {
                carry = result[i+1] - 9;
                result[i+1] -= 10;
            }
            else {
                carry = 0;
            }
        }
        System.out.println(Arrays.toString(result));

公认的答案是不好的。这是我的版本(支持不同的阵列大小):

公共静态int[]存储阵列(int[]n1,int[]n2){
int n1Size=n1.length-1,n2Size=n2.length-1,indexSum=n1Size>n2Size?n1Size+2:n2Size+2,slack=0,s;
int[]和=新的int[indexSum];
while(true){
如果(n1Size<0&&n2Size<0)
打破
s=(n1Size<0?0:n1[n1Size--])+(n2Size<0?0:n2[n2Size--])+松弛;
若(s>9){
总和[--指数]=s%10;
松弛度=s/10;
}否则{
总和[--指数]=s;
松弛=0;
}
}
如果(松弛!=0)
总和[0]=松弛;
回报金额;
}

什么是
plus
?这不是我们表示数组的方式。
000000000000123456789
中有多少个元素?plus是一个整数,总共有25个元素
结果[i]-10
int[]结果
。无法检查空值。请在提交之前编译代码。]。这段代码有很多编译错误。您应该尝试编译并运行代码。我之前的评论显示,循环的代码
0变为1号。长度为1
。len(结果)=len(数字1)。行
结果[i+1]
将抛出一个
ArrayIndexOutOfBoundsException
public static int[] sumIntArrays(int[] n1, int[] n2) {
    int n1Size = n1.length - 1, n2Size = n2.length - 1, indexSum = n1Size > n2Size ? n1Size + 2 : n2Size + 2, slack = 0, s;
    int[] sum = new int[indexSum];
    while (true) {
        if (n1Size < 0 && n2Size < 0)
            break;
        s = (n1Size < 0 ? 0 : n1[n1Size--]) + (n2Size < 0 ? 0 : n2[n2Size--]) + slack;
        if (s > 9) {
            sum[--indexSum] = s % 10;
            slack = s / 10;
        } else {
            sum[--indexSum] = s;
            slack = 0;
        }
    }
    if (slack != 0)
        sum[0] = slack;
    return sum;
}