我試圖解決編碼蝙蝠的問題並且無法通過一項測試。StringIndexOutOfBoundsException檢查單詞的最後一個字母時爲-1
給定一個字符串,計算以'y'或'z'結尾的單詞數 - 所以'heavy'中的'y'和'fez'中的'z'數,而不是'y'在「黃色」(不區分大小寫)。如果緊跟在字母后面沒有字母,我們會說y或z在單詞的末尾。 (注:Character.isLetter(char)的測試,如果一個字符是字母文字。)
這裏是我的代碼:
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( 「!!日 - YAZ !!」)→2
Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 (line number:6)
顯然一個數組中的字符串是空的。 – Eran
@Eran是正確的。一個簡單的解決方法是使用'word.endsWith(「y」)|| word.endsWith( 「Z」)'。這也適用於空字符串(如預期的那樣產生錯誤)。 –