Я пытаюсь решить проблему с кодировкой bat и не могу пройти один тест.StringIndexOutOfBoundsException -1 при проверке последней буквы слова
С учетом строки подсчитайте количество слов, оканчивающихся на 'y' или 'z' - так что «y» в «тяжелом» и «z» в «fez» рассчитывается, но не «y», в «желтом» (не чувствительный к регистру). Мы скажем, что y или z находятся в конце слова, если после него не будет буквы алфавита. (Примечание: Character.isLetter (голец) тесты, если символ представляет собой алфавитное письмо.)
Вот мой код:
public int countYZ(String str) {
int count = 0;
str = str.toLowerCase();
String[] newArr = str.split("[\\s:0-9-!]+");
for (String word : newArr) {
if (word.charAt(word.length() - 1) == 'y' ||
word.charAt(word.length() - 1) == 'z') {
count++;
}
}
return count;
}
Однако я не могу пройти этот тест и показывает эту ошибку:
countYZ ("!! день - Язев !!") → 2
Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 (line number:6)
Очевидно один Строки в вашем массиве пустые. – Eran
@Eran - это правильно. Легкое исправление использует 'word.endsWith (" y ") || word.endsWith ("г") '. Это также работает для пустых строк слов (дает false, как ожидалось). –