Java初学者在数组中前进求和

Java初学者在数组中前进求和,java,prefix,Java,Prefix,我的程序应该获取一个提供的数组并创建一个新数组,其中每个元素都是原始数组中先前元素的总和。例如,新数组中的元素1是原始数组中的元素1。新数组中的元素2是原始数组中元素1和元素2的和。新数组中的元素3是原始数组中元素1、2和3的总和。这是我写的,但我知道它是不完整的。请导游 public class PrefixSum { public static void main(String[] args) { int[] array = new int[]{0,5

我的程序应该获取一个提供的数组并创建一个新数组,其中每个元素都是原始数组中先前元素的总和。例如,新数组中的元素1是原始数组中的元素1。新数组中的元素2是原始数组中元素1和元素2的和。新数组中的元素3是原始数组中元素1、2和3的总和。这是我写的,但我知道它是不完整的。请导游

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]);
    }
}
公共类前缀
{
公共静态void main(字符串[]args)
{
int[]数组=新的int[]{0,5,1,-3,2,0,4};
int[]newArray=newint[7];
int x=0;
for(int i=0;i
您可以
调试
此代码以了解更改

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;
    }
}
publicstaticvoidmain(字符串[]args)
{
int[]数组=新的int[]{0,5,1,-3,2,0,4};
int[]newArray=newint[7];
int x=0;
for(int i=0;i
您可以
调试
此代码以了解更改

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;
    }
}
publicstaticvoidmain(字符串[]args)
{
int[]数组=新的int[]{0,5,1,-3,2,0,4};
int[]newArray=newint[7];
int x=0;
for(int i=0;i
公共静态void main(字符串[]args)
{
int[]数组=新的int[]{0,5,1,-3,2,0,4};
int[]newArray=newint[7];
整数和=0;
for(int i=0;i
公共静态void main(字符串[]args)
{
int[]数组=新的int[]{0,5,1,-3,2,0,4};
int[]newArray=newint[7];
整数和=0;
for(int i=0;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));
  }
}

试试看

您可以使用变量
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));
  }
}
试试看

试试看


试试看。

x应该是什么?为什么要求一个值和一个索引的和?你不能用
newArray
做任何事情。你需要花点精力来解决这个问题。
x
应该是什么?为什么要求一个值和一个索引的和?你不能用
newArray
做任何事情。您需要投入一些精力来解决这个问题。请解释一下您的代码。仅仅提供一个有效的例子是不好的。@mkabanen几乎没有什么细节需要解释,总是这样。对于初学者来说,理解如何解决这个问题是非常重要的。所以你应该解释代码背后的逻辑。OP有一个不完整的代码,他/她所需要的只是代码的其余部分,我看不到可能的细节来添加到我的答案中。顺便说一句,你可以随时投反对票@请解释一下你的代码。仅仅提供一个有效的例子是不好的。@mkabanen几乎没有什么细节需要解释,总是这样。对于初学者来说,理解如何解决这个问题是非常重要的。所以你应该解释代码背后的逻辑。OP有一个不完整的代码,他/她所需要的只是代码的其余部分,我看不到可能的细节来添加到我的答案中。顺便说一句,你可以随时投反对票@mkabanen。。。!!精心设计。。。!!
List<Integer> sums = new ArrayList<>();
Stream.of(0, 5, 1, -3, 2, 0, 4).reduce((left, right) -> {
    sums.add(left + right);
    return left + right;
});
[0, 5, 6, 3, 5, 5, 9]