Каких букв больше?
Подскажите, пожалуйста, в чем проблема
Решаю задачу где надо узнать каких букв больше гласных или согласных:
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.");
}
}
}