Я новичок в Java. Может ли кто-нибудь объяснить мне эту строку?Каково объяснение этой строки java?
Math.sqrt(6 * (1 until 10000).map(x => (1/Math.pow(x.toDouble, 2))).sum)
Я новичок в Java. Может ли кто-нибудь объяснить мне эту строку?Каково объяснение этой строки java?
Math.sqrt(6 * (1 until 10000).map(x => (1/Math.pow(x.toDouble, 2))).sum)
Это не 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);
Хорошо, это Скала, моя плохо. Благодарим вас за переписывание кода для меня, поскольку я не знаком с синтаксисом Scala. Меня заинтересовало конечное значение этого исчисления, которое оказалось π :) – user3024859
Это называется ошибка синтаксиса.
Ваш код не является Java или вы неправильно понимаете свое задание.
Код 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)
В Java 8, это было бы:
Math.sqrt(6 * IntStream.rangeClosed(1, 10000)
.mapToDouble(x -> (1.0/Math.pow((double)x, 2.0)))
.sum())
Непохоже, Java мне. –
Это [Scala] (http://scala-lang.org/), а не Java. – user2864740
Я не думаю, что это Java. Я могу понять, что это может быть Java 8 из-за выражения лямбда. Но 'до' все еще не является ключевым словом Java (даже в Java 8). –