Как сравнить последнюю букву строки с другой буквой
Хочу сравнить последнюю букву в слове с другой буквой.
String str = "гол";
if (str.substring(str.length()-1)=="л")
ошибку не дает но я подозреваю что неправильно
Ответы (2 шт):
нужно через иквалс сравнивать строки!
String str = "гол"
if (str.substring(str.length()-1).equals("л"))
чтобы сравнить предпоследний символ - вот так используется
String str = "гол"
if (str.substring(str.length()-2, str.length()-1).equals("о"))
Вкратце, почему не работает сравнение в вашем коде: строка (String) - это ссылочный тип, сравнение через == для ссылочных типов проверяет равенство ссылок, а не равенство содержимого. Для ссылочных типов сравнение через == даст true только если это один и тот же объект. Примеры смотрите в этом ответе: Как сравнивать строки в Java?
Для сравнения по содержимому используйте метод equals (на примере вашего кода):
String str = "гол";
if (str.substring(str.length()-1).equals("л")) {
System.out.println("Строка заканчивается на л");
}
Рекомендую почитать про разницу примитивных и ссылочных типов в Java.
Далее, если нужно проверить одиночный символ, а не подстроку, можно использовать метод charAt:
String str = "гол";
if (str.charAt(str.length()-1) == 'л') {
System.out.println("Строка заканчивается на л");
}
charAt возвращает значение примитивного типа char, поэтому тут сравнение через == (попытка сравнения через equals вызовет ошибку компиляции).
Соответственно, чтобы получить предпоследний символ, используйте str.charAt(str.length()-2).
Если нужно проверить, что строка заканчивается на определенную последовательность символов (судя по коду в комментариях к вопросу, вы это пытаетесь сделать), то вместо посимвольного сравнения лучше использовать метод endsWith (метод проверяет, что строка заканчивается на указанную подстроку, возвращает true если да, иначе false):
String str = "гол";
if (str.endsWith("ол")) {
System.out.println("Строка заканчивается на ол");
}