我是Java的新手。有人可以向我解释这一行吗?
Math.sqrt(6 * (1 until 10000).map(x => (1 / Math.pow(x.toDouble, 2))).sum)
答案 0 :(得分:4)
它被称为语法错误。
您的代码不是Java,或者您没有正确理解您的作业。
答案 1 :(得分:1)
代码是Scala,而不是Java。
在任何情况下,表达式都可以分解为..
val fn = (x: Int) => 1 / Math.pow(x.toDouble, 2)
val inner = (1 until 10000).map(fn).sum
..其内容如下:
对于
[1, 10000)
范围内的所有整数,通过函数f(x) -> 1/pow(x,2)
对它们进行转换并对结果求和。
然后无论结果如何,都将其用作最终sqrt的输入。
Math.sqrt(6 * inner)
答案 2 :(得分:0)
这不是Java。
它看起来更像是Scala。
我认为在Java中它看起来像这样:
double y=0d;
for(int x=1;x< 10000; x++){
y+=(1 / Math.pow(x,2);
}
y = 6*y;
Math.sqrt(y);
答案 3 :(得分:0)
在Java 8中,这将是:
Math.sqrt(6 * IntStream.rangeClosed(1, 10000)
.mapToDouble(x -> (1.0 / Math.pow((double)x, 2.0)))
.sum())