Java 初学者提高数组中的总和

Java beginner advancing sum in array

我的程序应该采用提供的数组并创建一个新数组,其中每个元素都是原始数组中先前元素的总和。例如,新数组中的第一个元素是原始数组中的第一个元素。新数组中的元素二是原始数组中元素一和元素二的总和。新数组中的元素三是原数组中元素一、二、三的和。我写了这个,但我知道它不完整。请指导。

public class PrefixSum
    {
    public static void main(String[] args)
    {
        int[] array = new int[]{0,5,1,-3,2,0,4};
        int[] newArray = new int[7];
        int x = 0;
        for(int i = 0; i < array.length; i++)
        {
            x = array[i];      
            x = x + i;
        }
        newArray[0] = 0;
        System.out.println(" " + newArray[x]);
    }
}

您可以Debug此代码以了解更改。

public static void main(String[] args)
{
    int[] array = new int[]{0,5,1,-3,2,0,4};
    int[] newArray = new int[7];
    int x = 0;
    for(int i = 0; i < array.length; i++)
    {
        x += array[i];      
        newArray[i] = x;
    }
}
public static void main(String[] args)
{
    int[] array = new int[]{0,5,1,-3,2,0,4};
    int[] newArray = new int[7];
    int sum = 0;
    for(int i = 0; i < array.length; i++)
    {
        sum += array[i];     
        newArray[i]= sum;
        System.out.println(" " +newArray[i]);
    }

}

您可以使用变量 runningTotal 来计算 运行 总数,如下所示:

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    int[] originalArray = new int[]{0,5,1,-3,2,0,4};
    int[] sumArray = new int[originalArray.length];

    int runningTotal = 0;
    for(int i = 0; i < originalArray.length; i++){
      runningTotal += originalArray[i];
      sumArray[i] = runningTotal;
    }

    System.out.println("The originalArray is: " + Arrays.toString(originalArray));
    System.out.println("The sumArray is: " + Arrays.toString(sumArray));
  }
}

输出:

The originalArray is: [0, 5, 1, -3, 2, 0, 4]
The sumArray is: [0, 5, 6, 3, 5, 5, 9]

试一试here!

List<Integer> sums = new ArrayList<>();
Stream.of(0, 5, 1, -3, 2, 0, 4).reduce((left, right) -> {
    sums.add(left + right);
    return left + right;
});

在 运行 之后打印 sums 得到:

[0, 5, 6, 3, 5, 5, 9]

试试看 here.