Java报错”StringIndexOutOfBoundsException”的原因以及解决办法

  • Post category:Java

Java报”StringIndexOutOfBoundsException”的原因是因为在字符串操作时,尝试访问超出字符串长度范围的索引,导致抛出此异常。

解决办法有以下两种:

  1. 检查字符串长度:
    在进行字符串操作时,要先检查字符串的长度,确保不会超出索引范围。例如,在给定字符串中查找指定字符的位置时,可以使用String类中提供的indexOf()方法,该方法返回字符在字符串中第一次出现的位置,如果字符串中不存在该字符,则返回-1。在使用indexOf()方法时,必须先判断该方法的返回值是否小于字符串长度,否则就会抛出”StringIndexOutOfBoundsException”异常。

下面是一个示例:

String str = "Hello World";
char c = 'o';
int index = str.indexOf(c);
if (index < str.length()) {
    System.out.println("字符" + c + "在字符串\"" + str + "\"中的位置是:" + index);
} else {
    System.out.println("字符" + c + "不存在字符串\"" + str + "\"中。");
}
  1. 使用substring()方法截取字符串:
    当使用substring()方法截取字符串时,要确保截取的起始和终止索引都在字符串范围内。例如,在从字符串中提取子串时,可以使用substring()方法,该方法接受两个参数,分别为起始和终止索引,返回从起始索引到终止索引之间的子串。必须确保起始和终止索引均小于字符串长度,否则就会抛出”StringIndexOutOfBoundsException”异常。

下面是一个示例:

String str = "Hello World";
int start = 6;
int end = 11;
if (start < str.length() && end < str.length()) {
    String sub = str.substring(start, end);
    System.out.println("字符串\"" + str + "\"中从位置" + start + "到位置" + end + "之间的子串是:" + sub);
} else {
    System.out.println("截取的起始和终止索引必须小于字符串\"" + str + "\"的长度。");
}

以上两种方法都可以避免”StringIndexOutOfBoundsException”异常的出现。