java.io.Console работает только при запуске Java-программы из командной строки без перенаправления STDIN / STDOUT.
Основное преимущество, которое я вижу в Console перед System.in, заключается в том, что у вас есть метод readPassword (), который не отображает символы, введенные пользователем (я не смог найти способ сделать это с System.in ).
У вас также есть readLine (), которая выдаст подсказку и прочитает одну строку. Вам не нужно создавать свой собственный LineNumberReader.
Но если вы хотите, чтобы ваша Java-программа могла читать из STDIN, когда она перенаправлена из файла или канала, вам все равно придется использовать System.in.