Каких букв больше?

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

Решаю задачу где надо узнать каких букв больше гласных или согласных:

public class Words {
     public static void main(String[] args) {
          String str="I love java";
          String[]voc={"a","e","o","u","i"};
          String[]con={"b","c","d","p","l","v","j"};
          for(String v : voc){
               for(String c : con){
                    if(str.contains(voc[v])>str.contains(con[c])) {//тут ошибка
                         System.out.println("Гласных больше");
                    } else {
                         System.out.println("Согласных больше");
                    }
               }
          }
     }
}

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

Автор решения: Alexandr

Обращение к элементу массива производится по индексу. Переменные v и c имеют тип String. Поэтому и ошибка компиляции. Ниже работающий код:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Words {

    public static void main(String[] args) {
        String str = "I love java";
        Set<Character> vowels =
                new HashSet<>(
                        Arrays.asList('a', 'e', 'o', 'u', 'i'));
        Set<Character> consonants =
                new HashSet<>(
                        Arrays.asList('b', 'c', 'd', 'p', 'l', 'v', 'j'));

        int numberOfVowels = 0;
        int numberOfConsonants = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = Character.toLowerCase(str.charAt(i));
            if (vowels.contains(ch)) {
                numberOfVowels++;
            } else if (consonants.contains(ch)) {
                numberOfConsonants++;
            }
        }

        if (numberOfVowels > numberOfConsonants) {
            System.out.println("There are more vowels than consonants.");
        } else {
            System.out.println("There are more consonants than vowels.");
        }
    }

}
→ Ссылка