Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Java_Arrays - Fatal编程技术网

将两个不同长度的整数数组求和为一个整数数组。JAVA

将两个不同长度的整数数组求和为一个整数数组。JAVA,java,arrays,Java,Arrays,我有一个项目,需要我写一个方法,将两个整数数组求和为一个整数数组。要求是数组的每个值中只能有一个数字。例如“1”而不是“11”,原始两个数组的长度可能不同。该项目背后的想法是,这些数组的长度应该大于整数变量允许的长度。我们应该创建这个新的数组,这样我们就可以打印出每个位置,基本上不用长字符就可以用大数字进行计算。 这就是我现在拥有的 public static int[] add ( int[] arr1, int[] arr2) { int length; if (arr1.l

我有一个项目,需要我写一个方法,将两个整数数组求和为一个整数数组。要求是数组的每个值中只能有一个数字。例如“1”而不是“11”,原始两个数组的长度可能不同。该项目背后的想法是,这些数组的长度应该大于整数变量允许的长度。我们应该创建这个新的数组,这样我们就可以打印出每个位置,基本上不用长字符就可以用大数字进行计算。 这就是我现在拥有的

public static int[] add ( int[] arr1, int[] arr2) {
    int length;
    if (arr1.length >= arr2.length) {
        length = arr1.length;
    }
    else {
        length = arr2.length;
    }
    int[] smallAr = new int [length];
    int[] bigAr = new int [length];
    if (arr1.length > arr2.length) {
        for (int i = 0; i < length; i++) {
            smallAr[i] = arr2[i];
            bigAr[i] = arr1[i];
        }
    }
    else {
        for (int i = 0; i < length; i++) {
            smallAr[i] = arr1[i];
            bigAr[i] = arr2[i];
        }
    }

    int[] addition = new int[length];
    for (int i = 0; i < length; i++) {
        if (i > smallAr.length -1) {
            addition[i] = bigAr[i];
        }
        else {
            addition[i] = bigAr[i] + smallAr[i];
        }
    }
    return addition;
}
公共静态int[]add(int[]arr1,int[]arr2){
整数长度;
如果(arr1.length>=arr2.length){
长度=1.5米长;
}
否则{
长度=2.5米长;
}
int[]smallAr=新的int[长度];
int[]bigAr=新的int[长度];
如果(arr1.length>arr2.length){
for(int i=0;ismallAr.length-1){
加法[i]=bigAr[i];
}
否则{
加法[i]=bigAr[i]+smallAr[i];
}
}
返回加法;
}

当前运行时会出现越界错误。我也明白,如果阵列需要额外的空间进行携带,这将无法正常工作。这方面的任何帮助都会很好

第一步,创建一个足够长的新数组-找到
arr1.length
arr2.length
的最大值。第二步,将两个数组中每个有效索引的总和分配给输出数组-如果数组长度大于或等于当前索引,则默认值为零。第三步,返回新数组。像

public static int[] add(int[] arr1, int[] arr2) {
    int[] r = new int[Math.max(arr1.length, arr2.length)];
    for (int i = 0; i < r.length; i++) {
        r[i] = (i < arr1.length ? arr1[i] : 0) + (i < arr2.length ? arr2[i] : 0);
    }
    return r;
}
公共静态int[]add(int[]arr1,int[]arr2){
int[]r=新的int[Math.max(arr1.length,arr2.length)];
对于(int i=0;i
“数组的每个值只能有一个整数”,这毫无意义。当然,每个数组位置只能有一个值!!请重新措辞。为什么要复制这些值。没有这个必要。扔掉那些代码,重新思考你在做什么当然,代码失败了。这两个复制循环都将迭代整个
长度,因此它将超过较小数组的长度。我已经更新了,以便更深入地了解这个问题。复制@QuintonWallenfang这是一个好的示例。如果我现在理解你了,你想添加两个数字,其中数字的数字存储在一个数组中。例如,您想添加
{9,4,7}
{8,5}
以给出
{1,0,3,2}
,就像您在纸上所做的那样,从右边添加数字,当数字之和大于9时结转,结果可以比最长的输入更长。对吗?如果是这样,请编辑问题并展示示例,以澄清您的问题。尽管这是项目任务代码的一个非常好的实现(您做OPs任务真是太好了),但它并没有向OP解释问题中的代码有什么问题。感谢您的帮助!我更新了原来的问题,因为我没有像我需要的那样具体。这里的第一篇帖子让我有点头晕。