如何使用多项运算(例如谐波和)的结果填充数组:谐波= 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();