如何使用多项运算(例如谐波和)的结果填充数组:谐波= 1 + 1/2 + 1/3 + 1/4 ....... + 1 / n
我的不完整版本如下所示:

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

最佳答案

2件事...您应该使用双精度数据类型,因为您不希望/不需要截断的值,并且应该将其用于该集合而不是数组。

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();

10-07 17:19