逻辑错误:startWord子字符串

时间:2015-05-28 04:05:16

标签: java substring

我的任务是使用substring来拉出字符串的前几个字母(如果它与另一个给定的字符串匹配)。基本上,给定一个字符串和第二个"字"如果字符串出现在字符串的前面,我们会说该字匹配字符串,除了它的第一个字符不需要完全匹配。在匹配项上,返回字符串的前面,否则返回空字符串。所以用字符串" hippo"单词" hi"返回"嗨"和" xip"返回" hip"。这个词至少是长度为1.

我的方法存在的问题是 str 只是一个字母而是其他不匹配 str 的情况,我碰到了

  

StringOutOfBound异常

例如,如果 str 是" h"并且单词是" ix",它应该什么也不返回。相反,我的方法崩溃与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 "";   

}

2 个答案:

答案 0 :(得分:2)

以这种方式纠正你的条件:

DropdownListViewCountries

答案 1 :(得分:1)

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

else部分,始终返回"",因为它永远不会满足您的条件。

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 "";  
}