Удалить гласные буквы

Как удалить гласные буквы?

Я решила двумя способами. В первом способе результат выводится неправильный, а во втором выдает ошибку.

1 способ:

public class Vocale {
    public static void main(String[] args) {
        String str = "i love java";
        String[] voc = {"a", "o", "e", "y", "i"};
        for (int i = 0; i < voc.length; i++)
            if (str.contains(voc[i])) {
                System.out.println(str.replace(voc[i], ""));
            }
    }
}

Результат:

i love jv i lve java i lov java  love java

2 способ:

public class Vocale {
    public static void main(String[] args) {
        StringBuilder str = new StringBuilder("I love java");
        String[] voc = {"a", "o", "e", "y", "i"};
        for (int i = 0; i < voc.length; i++) {
            str.delete(voc[i]); // ошибка
            System.out.println(str);
        }
    }
}

Подскажите пожалуйста в чем ошибка?


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

Автор решения: Эникейщик

В первом случае вы каждый раз печатаете исходную строку, без одной главной буквы, оставляя все другие.

Во втором случае вы изменяете строку, по которой идёт итерация, в итоге она становится короче, что заканчивается обращением к несуществующему элементу (IndexOutOfBoundException или как-то так).

→ Ссылка
Автор решения: Nataliia Myronenko
  public static String disemvowel(String text) {
  String[] ao ={"a","o","i","u","e","O","I","U","E","A"};
  for(int i=0; i<ao.length;i++){
  text = text.replace(ao[i] ,"");
     }
   return text;
  }
→ Ссылка