当前位置: 首页 > 知识库问答 >
问题:

逻辑错误:startWord子字符串

巫马星雨
2023-03-14

我的任务是使用substring提取字符串的前几个字母,如果它与另一个给定字符串匹配。基本上,给定一个字符串和第二个“word”字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除非它的第一个字符不需要完全匹配。在匹配时,返回字符串的前面,或者返回空字符串。因此,在字符串“hippo”中,“hi”返回“hi”,而“xip”返回“hip”。单词的长度至少为1。

我的方法的问题是,当str只有一个字母,而单词与str不匹配时,我会遇到

StringOutOfBound异常

例如,如果str是“h”,word是“ix”,那么它应该不返回任何内容。相反,我的方法因StringOutOfBond异常而崩溃。我能做些什么来修正我的逻辑。

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

赵永逸
2023-03-14

错误的原因是str长度小于word长度。请在您的逻辑前检查:if(str.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 "";  
}

祖波光
2023-03-14

通过以下方式纠正您的情况:

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 "";
 类似资料:
  • 我目前正在开发一个trie实现: 从文本文件中读取单词 逐个字符迭代该单词 将字符的按字母顺序排列的索引号附加到新节点并附加到根节点 我在第三步遇到了麻烦。 你看,我在第三步尝试做的是: null 对于第3步,我已经做了: 它设置root以便它现在是下一个节点 我在这些陈述中犯了什么逻辑错误吗?

  • 我试图创建一个类,它有一个接受温度(以摄氏度为单位)为双值的构造函数,如果温度小于-273.15,则将其设置为-273.15。它还可以计算不同测量单位的其他温度,但这并不重要。由于某种原因,我得到一个逻辑错误,它不能纠正小于-273.15到-273.15的输入。

  • JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。 让我们来详细看一下。 ||(或) 两个竖线符号表示“或”运算符: result = a || b; 在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 tr

  • 主要内容:逻辑非运算(NOT 或者 !),逻辑与运算符(AND 或者 &&),逻辑或运算符(OR 或者 ||),异或运算(XOR 运算符)逻辑运算符又称为布尔运算符,用来确定表达式的真和假。 MySQL中支持的逻辑运算符如下表所示。 MySQL 中的逻辑运算符 运算符 作用 NOT 或者 ! 逻辑非 AND 或者 && 逻辑与 OR 和 || 逻辑或 XOR 逻辑异或   下面分别讨论 MySQL 逻辑运算符的使用方法。 逻辑非运算(NOT 或者 !) 和 都是逻辑非运算符,返回和操作数相反的结

  • 主要内容:打脸某些 Python 教程,逻辑运算符的本质高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。 Python 也有类似的逻辑运算,请看下表: 表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学