首页 > 解决方案 > 返回每 2 个值相加的新数组?

问题描述

我正在尝试创建一个方法,该方法将接收一个数组并返回一个新数组,该数组添加每 2 个值以创建一个新值并继续下一个 2 个值。如果我有一个 {5,8,4,2} 数组,我希望该数组变为 {13,6}。到目前为止,在我的代码中,我已将其设置为创建 {5,8,4,2} 数组并将其变为 {13,12,6,0} 但是,我不希望它添加方法。所以我想知道如何让我的程序在第一次加法后跳过第二个值?另外,我如何在最后摆脱那个无用的零?

import java.util.*;
import java.io.*;
public class reduceArray{
   public static int[] reduce(int[] currentArray){
   int[] newArray = new int[currentArray.length];

   for(int i = 0; i < currentArray.length -1; i++){


     newArray[i] = currentArray[i] + currentArray[i+1];


      }

     return newArray;

   }

   public static void main(String[] args){
       int[] arrayANew;
       int[] arrayA = {5,8,4,2};



       arrayANew= reduce(arrayA);



       System.out.println(Arrays.toString(arrayANew) );




    }
}

标签: javaarraysfor-loopreturn

解决方案


您没有具体说明当前数组的长度是否总是偶数,但是我们可以轻松处理奇数长度的数组:

public static int[] reduce(int[] currentArray) {
    int[] newArray = new int[(currentArray.length + 1) / 2];

    for(int i=0; i<currentArray.length; i++) {
        newArray[i/2] += currentArray[i];
    }

    return newArray;
}

测试:

System.out.println(Arrays.toString(reduce(new int[] {5, 8, 4, 2})));
System.out.println(Arrays.toString(reduce(new int[] {5, 8, 4, 2, 7})));

输出:

[13, 6]
[13, 6, 7]

推荐阅读