Я создаю простую java-программу, которая сканирует файл и ищет определенные строки, я работаю в некоторой степени, но я уверен, что есть гораздо более эффективный и лучший способ сделать это, я использую метод IF содержит метод для сравнения для многих разных строк, но я чувствую, что это плохой способ практиковать и задавался вопросом, может ли кто-нибудь дать мне представление о том, что еще я мог бы попробовать?
while (sc.hasNextLine()) {
readLine = new Scanner(sc.nextLine());
x = readLine.nextLine();
numberOfLines++;
if (x.contains("a")) {
numberOfConsonants++;
}
if (x.contains("A")) {
numberOfConsonants++;
}
if (x.contains("e")) {
numberOfConsonants++;
}
if (x.contains("E")) {
numberOfConsonants++;
}
if (x.contains("i")) {
numberOfConsonants++;
}
if (x.contains("I")) {
numberOfConsonants++;
}
if (x.contains("o")) {
numberOfConsonants++;
}
if (x.contains("O")) {
numberOfConsonants++;
}
if (x.contains("u")) {
numberOfConsonants++;
}
if (x.contains("U")) {
numberOfConsonants++;
}
}
Вы можете попробовать что-то вроде этого:
Set<String> consonants = new HashSet<>();
consonants.add("a");
consonants.add("e");
consonants.add("i");
consonants.add("o");
consonants.add("u");
while (sc.hasNextLine()) {
readLine = new Scanner(sc.nextLine());
x = readLine.nextLine();
numberOfLines++;
if(consonants.contains(x.toLowerCase())) {
consonants++;
}
}
Это позволит вам разместить буквы и сопоставить их на более позднем этапе. Наборы должны предоставить вам довольно быстрый способ проверить, существует ли элемент или нет.
В качестве побочной заметки вы соответствуете гласным, а не согласным (что может создать путаницу в вашем коде).
Вы можете узнать о регулярных выражениях (например, в учебных пособиях оракула: https://docs.oracle.com/javase/tutorial/essential/regex/)
Регулярные выражения позволяют вам "сопоставлять" шаблоны со строками. И вы можете указать шаблон, который соответствует всем гласным "в одной съемке"; тем самым сворачивая ваш каскад операторов if в один.
(и я думаю, вы имеете в виду гласные, а не согласные?)