0

我需要一个将在我的 Java 考试中出现的概念的帮助。我需要编写一个方法,它接受一个数组并返回一个新数组,每个元素都是它之前元素的总和。即第一个数组是{3, 2, 1, 4},方法返回的数组是{3, 5, 6, 10}

到目前为止,这是我的代码:

public class testPrac1 {
public static void main(String[] args){
    int[] array = {3, 2, 1, 4};

    for (int value: sum(array)) {
        System.out.print(value);
    }
}
public static int[] sum(int[] array) {
    int[] newArray = new int[array.length];

    for (int i = 0; i < array.length ; i++) {
        if (i == 0){
            newArray[i] = array[0];
        }
        else 
            for (int j = 0; j < i; j++) 
                    newArray[i]  =  (array[i] + array[j]);
    }

    return newArray;
}

}
4

7 回答 7

1

只是为了调味,怎么样:

public static int[] sum(int[] array) {
  int[] newArray = new int[array.length];

  for (int i = 0; i < array.length; i++) {
    newArray[i] = array[i];
    if (i > 0) {
      newArray[i] += newArray[i-1];
    }
  }

  return newArray;
}
于 2012-11-02T05:29:59.730 回答
0

你为什么不试试这个简单的代码:

int [] array = {3,5,1,4};
int newarray[]=new int[array.length];
int sum=0;
for(int i=0;i<array.length;i++)
        {sum=sum+array[i];
        newarray[i]=sum;}
于 2015-03-31T15:45:39.607 回答
0
     public static int[] sum(int[] array) {
        int[] newArray = new int[array.length];

        for (int i = 0; i < array.length ; i++) {
          for (int j = 0; j <= i; j++) 
             newArray[i]  += array[j];
        }
        return newArray;
      }

您不需要条件,因为<=将处理0. 所以循环只是说遍历数组并将位置中的所有值求和,即 <= 到数组中的当前位置。

于 2012-11-02T05:35:49.890 回答
0
for (int j = 0; j <= i; j++) 
    newArray[i]  += array[j]);
于 2012-11-02T05:25:52.063 回答
0

试试你的其他部分

 for (int j = 0; j <= i; j++) 
     // newArray[i]  =  (array[i] + array[j]);
     newArray[i]  += array[j];
于 2012-11-02T05:27:39.877 回答
0

就这样做

 else 
        newArray[i]  = newArray[i-1] + array[i]; 
于 2012-11-02T05:28:57.880 回答
0

前 k 个元素的和等于前 k-1 个元素加上第 k 个元素的和。

在您给出的示例中:

{3,2,1,4} --> {3,5,6,10}
3 = 3
3+2 = 5
3+2+1 = 5+1 = 6
3+2+1+4 = 6+4 = 10

所以你真正需要的是:

newArray[0]=array[0];
for(int i=1; i<array.length; i++)
    newArray[i]=newArray[i-1]+array[i];
于 2012-11-02T05:29:16.503 回答