Комментарии 10
я наставник на курсе «Java-разработчик» ...
Рановато вам в наставники. Самому бы подучиться.
Hidden text
> ... воспользуемся классом Optional ...
new Scanner(System.in).nextLine()
for (var i = 1; i < 32; i = i * 2)
Зачем? for (Integer i : SECRETS.keySet())
, проверку на обратный порядок сделать отдельно после цикла.
Для реверса списка тоже специальный метод имеется. Не говоря уже о том, что вместо списка можно было просто двунаправленную очередь использовать.
actions.size() > 0
А почему экзепшн final: final NumberFormatException e?
Чтобы игнорируемое непроверяемое исключение было на всякий случай иммутабельным. Вероятно, причина в секретности рукопожатия. Но тогда где private и замена стрингов на массив чаров. Чувствуется некая недосказанность в коде.
Про иммутабельность и final-модификаторы можно почитать хорошую дискуссию тут:
https://stackoverflow.com/questions/46596271/does-it-make-sense-that-i-have-to-make-most-of-my-variables-final
Optional он для stream api сделан, в вашем случае можно гораздо проще и точно также без единого null-a (и без Optional)
public static void main(final String[] args) {
try {
System.out.print("Действия: " + getHandshake(number()));
} catch (Exception e) {
// ignore
}
}
static int number() {
System.out.println("Введите число:");
var number = Integer.parseInt(new Scanner(System.in).nextLine());
if (number < 1 || number > 31) {
throw new IllegalArgumentException();
}
return number;
}
А почему Optional.of, а не Optional.ofNullable?
for (var i = 1; i < 32; i = i * 2)
Может лучше заменить умножение на 2 на сдвиг влево на один бит? Будет явно быстрее.
Решаем задачу о секретном рукопожатии на Java