Лямбда-выражение принимает предложение от пользователя - PullRequest
0 голосов
/ 10 декабря 2018

Я пишу программу, которая использует лямбда-выражения для принятия строки от пользователя, преобразования ее во все строчные буквы и удаления знаков препинания, затем в ней перечислены уникальные слова в алфавитном порядке.У меня проблемы с тем, чтобы заставить мою программу принять предложение от пользователя, а также удалить пунктуацию.Я пытался использовать .replaceAll(), но получаю ошибку, поэтому я не должен делать это правильно, или это неправильный код для использования.Любая помощь приветствуется.Вот код, который у меня пока есть:

//I added my own string just to see if the code I have works.
public static void main(String[] args) {
    String[] strings = {"The brown fox chased the white rabbit."};


    System.out.printf("Original strings: %s%n", Arrays.asList(strings));


    Stream<Map.Entry<String, Long>> uniqueWords = Arrays.stream(strings)
         .map(String::toLowerCase)
         //remove punctuation?
         .collect(Collectors.groupingBy(w -> w, Collectors.counting()))
         .entrySet().stream()
         .filter(e -> e.getValue() == 1)
         .distinct();
    System.out.println("Unique words in Alphabetical Order: "+ uniqueWords);
}

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете использовать 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
...