Почему метод Character.toLowerCase() игнорируется?
Поясните пожалуйста почему метод Character.toLowerCase() игнорируется и как правильно написать программу в таком подходе решения данной задачи без указания гласных в верхнем регистре во втором методе? При написании этой программы в IDE получаю предупрждение "Result of 'Character.toLowerCase()' is ignored".
import java.util.Scanner;
public class Main {
public static boolean isVowel(char ch) {
Character.toLowerCase(ch);
return Character.toString(ch).matches("[aeiou]");
}
/* Do not change code below */
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char letter = scanner.nextLine().charAt(0);
System.out.println(isVowel(letter) ? "YES" : "NO");
}
}
Ответы (1 шт):
Игнорируется потому что Вы игнорируете полученный результат. Character это immutable тип, что значит, что созданный экземпляр изменить нельзя. Соответственно, Character.toLowerCase(ch) не меняет ch, а возвращает ch в нижнем регистре.
Пара вариантов, как исправить:
1.
Character.toLowerCase(ch);
заменить на
ch = Character.toLowerCase(ch);
Character.toLowerCase(ch);
return Character.toString(ch).matches("[aeiou]");
заменить на
return Character.toString(Character.toLowerCase(ch)).matches("[aeiou]");
Character.toLowerCase(ch);
return Character.toString(ch).matches("[aeiou]");
заменить на
return Character.toString(ch).matches("(?i)[aeiou]");
matches("(?i)[aeiou]") - проверка совпадения без учёта регистра.