计算字符串数字总和时的结果很奇怪

时间:2016-04-27 20:22:26

标签: java-8 java-stream

此代码将字符串流式传输到char值的IntStream中,并将各个值相加:

private static int getSumOfDigits(String line) {
        return line.chars().sum();
    }

如果输入23,你可能会得到5分,但显然我得到101 。这里出了什么问题?

2 个答案:

答案 0 :(得分:3)

@Martin Seeler是对的。您需要将字符转换为整数:

return line.chars()
           .filter(Character::isDigit)
           .map(Character::getNumericValue)
           .sum();

答案 1 :(得分:2)

原因是,它不是您要添加的数值,而是字符23的ascii值,即50和{{1} }。

要获得真实的结果,您可以使用51将字符转换为您期望的数字。