java PigLatin语句转换器方法给出了“indexoutofboundsexception”错误等
我有一个项目,指导创建一个java类,它有两个方法:一个将单词翻译成pig拉丁语,另一个将整个句子翻译成pig拉丁语。我应该从一个句子中提取每个单词,通过我的单词翻译方法,然后用每个翻译的单词返回最终的句子
我不能使用字符串之类的函数。拆分和其他快捷方式功能
我的代码如下所示:
public String translateWord (String word ) {
if (word.charAt(0) == 'q' && word.charAt(1) == 'u') {
return word.substring(2) + "quay";
}
else if ( word.charAt(0) == 'a' || word.charAt(0) == 'e' || word.charAt(0) == 'i' || word.charAt(0) == 'o' || word.charAt(0) == 'u') {
return word + "way";
}
else
return word.substring(1) + word.charAt(0) + "ay";
}
public String translateSentence ( String sentence ) {
String finalStr, temp;
int index = sentence.indexOf(" ");
temp = sentence.substring ( 0, index );
finalStr = translateWord(temp);
for ( int i=index+1; i < sentence.length()-2; i++ ) {
if ( sentence.substring(i, i+1).equals(" ")) {
temp = sentence.substring(i+1, sentence.indexOf( " ", i+1) ) ;
finalStr = finalStr + translateWord(temp);
}
}
return finalStr;
}
}
以下是出现的消息:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 10, end -1, length 18
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3756)
at java.base/java.lang.String.substring(String.java:1902)
at PigLatin.translateSentence(PigLatin.java:25)
at driver.main(driver.java:6)
word方法没有问题,只是供参考。然而,有人能解释为什么句子法不起作用,并帮助解决它吗
提前谢谢,如果需要进一步解释,请告诉我
# 1 楼答案
问题似乎出在这条线上
temp = sentence.substring(i+1, sentence.indexOf( " ", i+1) ) ;
indexOf函数的文档说明如下
返回:一个int值,表示字符串中第一次出现的字符的索引,如果从未出现,则返回-1
在循环中的某个点上,代码找不到更多的空格,然后indexOf返回-1,这是子字符串函数的无效结束索引。因此有例外