此代码将字符串流式传输到char值的IntStream中,并将各个值相加:
private static int getSumOfDigits(String line) {
return line.chars().sum();
}
如果输入23,你可能会得到5分,但显然我得到101 。这里出了什么问题?
答案 0 :(得分:3)
@Martin Seeler是对的。您需要将字符转换为整数:
return line.chars()
.filter(Character::isDigit)
.map(Character::getNumericValue)
.sum();
答案 1 :(得分:2)
原因是,它不是您要添加的数值,而是字符2
和3
的ascii值,即50
和{{1} }。
要获得真实的结果,您可以使用51
将字符转换为您期望的数字。