На всех остальных ответах не указывается, почему вы получаете исключение нулевого указателя. Вы используете объект Long
вместо примитива long
. Таким образом, всякий раз, когда вы используете прямую арифметическую операцию (например, +
), компилятор распаковывает Long
в long
, вызывая Long.longValue()
. Так sum += sum
переводится на:
sum = Long.valueOf(sum.longValue() + sum.longValue());
Поскольку sum
равно нулю, вы получите исключение нулевого указателя. Большинство людей избегают этого, просто используя примитив long
.