有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    问题似乎出在这条线上

    temp = sentence.substring(i+1, sentence.indexOf( " ", i+1) ) ;

    indexOf函数的文档说明如下

    返回:一个int值,表示字符串中第一次出现的字符的索引,如果从未出现,则返回-1

    在循环中的某个点上,代码找不到更多的空格,然后indexOf返回-1,这是子字符串函数的无效结束索引。因此有例外