2017-04-25 75 views
2

如何可以填充從多個操作結果等的高次諧波總和的陣列:諧波= 1 + 1/2 + 1/3 +四分之一....... + 1/N 我的不完整的版本是這樣的:保存多個結果的陣列中的在Java

public static void main(String[] args) { 
     int x=1, harmonic=0, y=2; 
     int[] n; 
     n = new int[]; 

     // for populating the array ?!?!?! 
     do {n = {x/y}} 
     y++; 
     while (y<=500); 

     //for the sum for loop will do... 
     for (int z=0; z<=n.length; z++){ 
      harmonic += n[z]; 
      } 
     System.out.println("Harmonic sum is: " + harmonic); 
    } 

回答

1

兩件事情......你應該,因爲你不婉噸/需要截斷值使用雙數據類型,你應該使用該集合,而不是陣列。

public static void main(String[] args) { 

    double x = 1, harmonic = 0, y = 2; 
    List<Double> arc = new ArrayList<>(); 

    do { 
     arc.add(x/y); 
     y++; 
    } while (y <= 500); 

    for (Double double1 : arc) { 
     harmonic += double1; 
    } 
    System.out.println("Harmonic sum is: " + harmonic); 
} 

的輸出如下:

諧波總和:5.792823429990519

編輯:

使用流:

double streamedHarmonic = arc.stream().mapToDouble(Double::doubleValue).sum(); 
+0

我在開始時並仍然l賺取基礎知識,這就是爲什麼我試圖用數組來做到這一點。我會研究你的解決方案。多謝 ! – dragos

相關問題