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 "";
我的任务是使用 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 "";