2017-01-10 15 views
1

我的程序應該採用提供的數組並創建一個新數組,其中每個元素是原始數組中以前元素的總和。例如,新數組中的元素一是原始數組中的元素一。新數組中的元素二是原始數組中元素一和元素二的和。新數組中的元素三是原始數組中元素1,2和3的總和。我寫了這個,但我知道它是不完整的。請指導。Java初學者在數組中推進總和

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]); 
    } 
} 
+2

'x'應該是什麼?你爲什麼總結一個價值和一個指數? –

+2

你不用'newArray'做一件事。你需要付出一些努力來解決這個問題。 –

回答

2

您可能需要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; 
    } 
} 
+1

請解釋你的代碼。只是提供一個工作的例子並不好。 – mkabanen

+1

@mkabanen幾乎沒有任何細節可以解釋 – Null

+2

總是存在。對於初學者程序員來說,理解如何解決問題非常重要。所以你應該解釋你的代碼背後的邏輯。 – mkabanen

1
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]); 
    } 

} 
4

您可以使用一個變量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!

1
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

+0

精心製作......! –

+0

http://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#package.description – Henrik