Как лучше всего ето реализовать? | Java

Есть задание, нужно сделать все на java

Ввести текст и целое число - длину слова. Из текста удалить все слова указанной длины, начинающихся на согласную букву. Вывести начальную строку и строку после обработки.

(

package com.company;
import static java.lang.System.*;
import java.util.Scanner;
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {
        String txt = new String();
        Scanner scann = new Scanner(in);
        out.print("Enter text here: ");
        txt = scann.nextLine();

        int lim = 0;
        out.print("Enter word limit: ");
        lim = scann.nextInt();

        String[] s = txt.split(" ");

        ArrayList<Character> arr = new ArrayList <Character>();
        arr.add('а');
        arr.add('о');
        arr.add('у');
        arr.add('и');
        arr.add('і');
        arr.add('е');
        for ( int i = 0; i<arr.size()-1; i++)

            if (s[i].charAt(0) != arr.size())
                if (s[i].length() >=  lim)
                    s[i].replaceAll(s[i], " ");


        out.println("Original: ");
        out.println(txt);
        out.printf("After changes: ");
        out.printf(String.valueOf(s));
    }

}
)

Ответы (1 шт):

Автор решения: Дмитрий

Попробуйте так и , если что-то непонятно, задавайте вопрос:

import java.util.Scanner;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;

public class Main {

    private final static Set<String> VOWELS = Arrays.stream("аоуиеыэїі".split("")).collect(Collectors.toSet());
    
    public static void main(String[] args) {
        
        Scanner scann = new Scanner(System.in);        
        print("Enter text here: ");
        String txt = scann.nextLine();        
        print("Enter word limit: ");
        int length = scann.nextInt();
        
        String result = Arrays.stream(txt.split(" "))
                .filter(word -> !(word.length() == length && !VOWELS.contains(word.substring(0, 1))))
                .collect(Collectors.joining(" "));
        
        print("Original: ", txt, "After changes: ", result);        
    }
    
    private static void print(String...args) {
        Arrays.stream(args).forEachOrdered(System.out::println);
    }
    
}
→ Ссылка