【发布时间】:2017-02-13 21:44:29
【问题描述】:
在方法中计算数字总和与连续幂的最佳方法是什么?
例子:
calculateSum(5) -> returns 5^1 = 5
12 -> 1^1 + 2^2 = 5
26 -> 2^1 + 6^2 = 38
122 -> 1^1 + 2^2 + 2^3 = 13
我想使用流,因为我正在尝试练习一些 J8 功能,但找不到让它工作的方法。
编辑:我需要它来解决这个 kata:https://www.codewars.com/kata/5626b561280a42ecc50000d1/train/java
EDIT2:到目前为止,这是我的代码:
public static void calculateSum(int input) {
String[] number = String.valueOf(input).split("");
Map<Integer, Integer> map = Arrays.stream(number)
.map(Integer::valueOf)
.map(d -> (int) Math.pow(d, list.indexOf(d)))
.collect(Collectors.toMap(d));
}
我不知道如何将来自number array 的数字与它们的连续幂进行映射,这样我就可以对那个映射中的值求和。
【问题讨论】:
-
展示你尝试过的东西,然后我们可以从那里开始工作
-
负整数?
-
考虑
Stream.reduce或(考虑到“收集”一词出现在kata 中)Stream.collect。您可以将long提供给reduce/collect吗?如果没有,你能做些什么呢? -
@smac89 添加了编辑。
-
@GrzegorzGórkiewicz 只是肯定的。