Вы можете использовать Scanner
, чтобы принять пользовательский ввод, используя метод nextLine()
, чтобы принять строку ввода с консоли.Затем вы можете toLowerCase()
преобразовать предложение в нижний регистр, а затем split()
, чтобы создать Array
.Вы можете использовать регулярное выражение \\W+
, которое будет разбито на любой несловесный символ.
Также вы слишком усложняете Stream
.Вам нужно использовать только distinct()
и sorted()
для создания потока уникальных значений в алфавитном порядке:
Scanner in = new Scanner(System.in);
String[] strings = in.nextLine().toLowerCase().split("\\W+");
System.out.printf("Original strings: %s%n", Arrays.asList(strings));
Arrays.stream(strings).distinct().sorted().forEach(System.out::println);
Пример ввода / вывода:
This This is. a sentence with duplicate words words, and punctuation!!
Original strings: [this, this, is, a, sentence, with, duplicate, words, words, and, punctuation]
a
and
duplicate
is
punctuation
sentence
this
with
words