Оберните свой код в Optional
, который использует filter()
для проверки длины и orElse()
для вывода при вводе неверной длины:
System.out.print(Optional.of(new Scanner(System.in).nextLine())
.filter(str -> str.matches("\\d{3}")).map(str -> str.chars().sum() - '0' * 3)
.orElse("invalid input"));
Обратите внимание, что вы можете заменить :
.mapToObj(i -> ((char)i)-'0').reduce(0, (a,b)->a+b)
с:
.map(i -> ((char)i)-'0').sum()
или, поскольку у вас ровно 3 цифры, просто:
.sum() - '0' * 3