У вас есть пара проблем с вашим кодом:
- вы не можете привести
long[]
к int[]
, как это -> (int) longarr
, поэтому вам нужно сделать следующее:оставьте его как for (int x: longarr) {...}
- Если вы изменили его на
for (int x: longarr) {...}
, возникает новая ошибка, так как компилятор не может явно привести long
к int
, поэтому вы можете изменить тип переменнойfor (long x: longarr) {...}
- Теперь вы можете привести каждый
long
к int
перед применением суммирования.
Это то, что делает подход @ Meini, но здесь есть другой подходв любом случае:
int summation = Arrays.stream(longarr).mapToInt(v -> (int)v).sum();
Обратите внимание, что здесь mapToInt
требуется для фактического получения значения int
, которое требуется в противном случае, если бы мы должны были напрямую назначить суммирование long
s для переменной int
компилятор будет жаловаться, что long
может хранить гораздо большие значения, чем int
.
другая версия:
int summation = (int)Arrays.stream(longarr).sum();