Logic Error: startWord substring

Logic Error: startWord substring

我的任务是使用 substring 提取字符串的前几个字母(如果它与另一个给定字符串匹配)。基本上,给定一个字符串和第二个 "word" 字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除了它的第一个字符不需要完全匹配。在匹配中,return 字符串的前面,否则 return 空字符串。因此,对于字符串 "hippo",单词 "hi" returns "hi" 和 "xip" returns "hip"。该词的长度至少为 1。

我的方法的问题是 str 只是一个字母,而 word 是其他不匹配的字母 str,我运行变成了

StringOutOfBound Exception

例如,如果str是"h"并且word是"ix",它应该return 没什么。相反,我的方法因 stringoutofbound 异常而崩溃。我该怎么做才能解决我的逻辑问题。

public String startWord(String str, String word) {
   int length;

   length = word.length();

    if (str.substring(0, length).equals(word))
      return str.substring(0, length);
   else if (str.substring(1, length).equals(word.substring(1, word.length())))
      return str.substring(0, length);
   else
      return "";   

}

错误原因是str长度小于word长度。请在您的逻辑之前打勾:if(str.length()<=word.length()).

else部分,总是return"",因为它永远不会满足你的条件。

if(str.length()>=word.length())
{
   if (str.substring(0, length).equals(word))
      return str.substring(0, length);
   else if (str.substring(1, length).equals(word.substring(1, word.length())))
      return str.substring(0, length);
   else
      return ""; 
}
else{
    return "";  
}

以这种方式更正您的条件:

if (str.substring(0, Math.min(length, str.length())).equals(word))
    return str.substring(0, length);
else if (str.substring(1, Math.min(length, str.length())).equals(word.substring(1, word.length()))) {
    return str.substring(0, length);
}
else
    return "";