2012-11-02 129 views
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; 
} 

} 
+0

接着說:homework'標籤這裏 –

+0

這不是功課,這是一個概念,我需要了解。 – Zach

+1

@ViralShah:'家庭作業'標籤已經過時了。 –

回答

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; 
} 
+0

非常感謝您,我發現只使用newArray [i-1]而非array [i- 1],因爲newArray [i-1]已經是之前元素的總和。 – Zach

0
for (int j = 0; j <= i; j++) 
    newArray[i] += array[j]); 
+2

編輯:'j <= i':p – Muel

+0

@Muel +1感謝您的注意;) –

0

試試你的其他部分

for (int j = 0; j <= i; j++) 
    // newArray[i] = (array[i] + array[j]); 
    newArray[i] += array[j]; 
0

只是這樣做

else 
     newArray[i] = newArray[i-1] + array[i]; 
0

的F的總和首先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]; 
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的情況。所以循環只是說通過數組,並將所有位置爲< =的值總結到數組中的當前位置。

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;} 
相關問題