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

字符串1

洪雨石
2023-03-14

我正在看《密码蝙蝠》的练习题,我偶然发现了这个。它说:

给定一个字符串和第二个“word”字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除非它的第一个字符不需要完全匹配。在匹配时,返回字符串的前面,或者返回空字符串。因此,对于字符串“hippo”,单词“hi”返回“hi”,而“xip”返回“hip”“。单词的长度至少为1。”

到目前为止,这就是我提出的解决方案。它在大部分情况下都能正常工作,但我遇到一个错误,如下所示:

例外:java。lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1(行号:3)

这种情况就发生了--

public String startWord(String str, String word) {

    String first = str.substring(1, str.length());
    String second = word.substring(1, word.length());

    if (str.length() == 0) {
        return "";
    } 
    if (str.startsWith(word)) {
        return str.substring(0, word.length());
    } 
    else if (first.startsWith(second)) {
        return str.substring(0, word.length());
    }

    return "";
}

共有1个答案

常波
2023-03-14

你应该把你的

 if (str.length() == 0) {
        return "";
 } 

作为函数的第一个语句,这样零长度字符串就不会引发异常。

 类似资料:
  • 对性能是否有影响? 不同Java版本的行为是否有差异?

  • 问题内容: 以下语句, 产生输出。 但是,以下内容 产生。 区别在哪里? 问题答案: 您会因为操作符优先级和字符串转换的结合而看到此行为。 JLS 15.18.1 指出: 如果只有一个操作数表达式的类型为String,则对另一操作数执行字符串转换(第5.1.11节),以在运行时生成字符串。 因此,第一个表达式中的右侧操作数将隐式转换为字符串: 但是对于第二个表达式,必须将复合赋值运算符与一起考虑。

  • 问题内容: String[] letters = {“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “L”}; 为什么是 Fk呀! 输入AL字母之一绝对不会发生? 问题答案: 字符串是对象。所述通过引用,而不是由它们的内部值进行比较的对象。 有两种解决方案: 使用method来比较两个对象的值。 使用代替。这是原始的,因此可以使用。

  • 我有以下JSON字符串: 我只想要和。我试过这样的方法: 但我得到了以下错误: 我只使用过几次JSON。有人能帮我吗? 对我来说最好的例子是这样的,我在另一个例子中做过: 可能吗? 现在我已经做到了: 我试着这样做: 然后: 但现在当我做一个Prtinout时,我会得到和以前一样的错误:

  • 字符串是一系列的字符,比如说 "hello, world"或者 "albatross"。Swift 的字符串用String类型来表示。String的内容可以通过各种方法来访问到,包括作为Character值的集合。 Swift 的 String  和 Character  类型提供了一种快速的符合 Unicode 的方式操作你的代码。字符串的创建和修改语法非常轻量易读,使用与 C 类似的字符串字面

  • 本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 比较字符串 字符串大小写 Unicode String是例如"hello, world","海贼王"这样的有序的Character(字符)类型的值的集合,通过String类型来表示。 Swift 的String和Character类型提供了一个快速的,兼容 Unicod