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

检查单词的最后一个字母时,StringIndexOutfBoundsException-1

鲜于星波
2023-03-14

我试图解决编码蝙蝠的问题,但无法通过一项测试。

给定一个字符串,计算以“y”或“z”结尾的单词数 - 因此“heavy”中的“y”和“fez”中的“z”计数,但不包括“黄色”中的“y”(不区分大小写)。我们会说,如果一个单词后面没有一个字母,那么y或z就在单词的末尾。(注意:字符是字母(字符)测试字符是否为字母。

这是我的代码:

public int countYZ(String str) {
int count = 0;
str = str.toLowerCase();
String[] newArr = str.split("[\\s:0-9-!]+");
for (String word : newArr) {
  if (word.charAt(word.length() - 1) == 'y' || 
    word.charAt(word.length() - 1) == 'z') {
    count++;
    }
  }
    return count;
}

但是,我无法通过此测试,它显示了以下错误:

CountYZ("!! day--yaz!!")→2

< code >异常:Java . lang . stringindexoutofboundsexception:字符串索引超出范围:-1(行号:6)

共有1个答案

齐元章
2023-03-14

异常:java.lang.字符串索引超出边界异常:字符串索引超出范围:-1(行号:6)表示您正在调用 -1个索引。

您总是调用charAt(word.length()-1),因此如果word.length()-1==-1word.length () == 0。如果word.length(),请添加检查

这是由以下切片引起的:

!!day--yaz!!
["day", "yaz", ""]

例如,您可以编写:

for (String word : newArr) {
  if (word.length() > 0 && (word.charAt(word.length() - 1) == 'y' || 
    word.charAt(word.length() - 1) == 'z')) {
    count++;
    }
  }
    return count;
}

或更简单(根据Ole的想法):

for (String word : newArr) {
  if (word.endsWith("y") || word.endsWith("z")) {
    count++;
    }
  }
    return count;
}

 类似资料:
  • 输入要翻译的单词:Hello word in twist around:LohelLO 注:翻译的单词是这样形成的:直升机=OpterhelicCR后半部分的第一个字母大写:Opter前半部分的第一个字母小写:helic前半部分的最后一个字母大写:C后半部分的最后一个字母大写:R 这是我的密码。public static void main(string[]args){Scanner input=

  • 我想删除字符串末尾的所有数字和符号。得到: 我可以剥离数字,但不能剥离。我该怎么做? 这是我到目前为止的代码:

  • 问题内容: 如何获得给定字符串的每个单词的首字母? 我找到了javascript方法,但不确定如何将其转换为php。 问题答案: 在空格上,然后使用表示法以数组形式访问结果字符串: 如果您期望多个空格可以分隔单词,请改用 或者,例如,如果非空格字符分隔单词(),请同时使用:

  • 问题内容: 我正在尝试使用jQuery,CSS或PHP来增加字符串中每个单词的第一个字母的字体大小。例如,我将在h1标签中有一个标题,如下所示: 我想通过文本将所有文本都转换为大写(CSS没问题),然后增加出现在字符串中的第一个字母的字体大小。使用CSS或jQuery,是否可以选择每个单词的首字母并进行修改? 问题答案: $(document).ready(function() { var wor

  • 问题内容: 我可以在python中做这样的事情: 这将检查列表中是否存在“某些单词”。但是我可以做反向事情吗? 我必须检查数组中是否有某些单词在字符串中。我可以使用循环来执行此操作,但是这种方式有更多的代码行。 问题答案: if any(word in ‘some one long two phrase three’ for word in list_):

  • 问题内容: 示例代码: 我想更改最后一个字母的颜色,在这种情况下为“ g”,但我需要使用CSS的解决方案,不需要JavaScript解决方案。 我逐个字母显示字符串,我不能使用静态解决方案。 问题答案: 不使用JavaScript,您唯一的选择是: 编辑您的小提琴链接 : 我不太确定为什么您说您不需要JavaScript解决方案,因为您已经有了很多解决方案。无论如何,在此示例中,您只需要进行一些小