java - 返回每 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) );
}
}
解决方案
您没有具体说明当前数组的长度是否总是偶数,但是我们可以轻松处理奇数长度的数组:
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]
推荐阅读
- amazon-web-services - 拒绝访问 Amazon S3 put 对象的加密策略
- vba - Excel VBA Worksheets.Cells 返回值而不是范围
- javascript - jQuery:单击链接时附加数据属性
- r - 根据日期将多列与来自另一个框架的行值匹配
- python - Python-无序正则表达式
- android - onStop/onStart 后自定义视图中的 onDraw 不再执行
- intellij-idea - java.io.IOException:在 WebStorm 中打开终端时无法创建 PTY
- r - 在建模之前减少因子水平的数量
- dependency-injection - 在 AzureFunction 中注入 EntityFrameworkCore DbContext
- python - 如何立即将函数参数转换为小写(不在函数体中)?