tom*_*ato 1 java string java-8 java-stream
很想知道是否有更优雅的方法试图在Java 8中找到字符串中奇数位置的数字总和.
这是我目前的职能
/**
* Explode string into char array, get sum of ASCII values at odd positions and divide by 10 to convert
* to the integer value from that character
* @param ccNumber string
* @return int sum
*/
int calculateSumOfOddDigits(final String ccNumber) {
final char[] digits = ccNumber.toCharArray();
return (digits[0] + digits[2] + digits[4] + digits[6] + digits[8] + digits[10] + digits[12] + digits[14]) / 10;
}
Run Code Online (Sandbox Code Playgroud)
还不熟悉Streams和Java 8,想想也许你可以这样做:
ccNumber.chars().mapToObj(x -> (char) x {
..add odd position digits
})
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议.
这样的事情怎么样:
String str = "01234";
Integer sum = IntStream.range(0, str.length())
.filter(i -> i % 2 == 0)
.map(str::charAt)
.sum();
System.out.println(sum);
Run Code Online (Sandbox Code Playgroud)