StringIndexOutOfBoundsException 字符串越界错误

来源:互联网 发布:java基础入门 推荐书籍 编辑:程序博客网 时间:2024/04/29 15:18

今天发现的这个错误,原因是后来的时候,有用到字符串的截取函数,截取的时候 通常是没有问题的,但是如果字符串长度发生了变化,那么就十分容易报这个错。

首先是声明字符串的时候,如下:

  private static String[] nicks = {"aa","AA7676","ss","fd","ddf","dd","ds","xdfd","Abc","eee","xxx","eoe","fdfdfdf","gryry","iloveyou"};

这里是网上找的一个例子,这个是可以运行成功的,其中有一个截取字符串的地方

String lastCatalog = converterToFirstSpell(mNicks[position-1]).substring(0, 1);    上述的字符串中长度至少都是2的,所以此时不会报错,但是当我更改字符串的时候,其长度发生变化,是有可能长度不够的,此时在截取字符串的话就会报这个,字符串越界错误。


那么如何解决,因为这里要用到substring 函数,  substring函数 返回的字符串 包括start处的字符,不包括end处的字符。

    如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。   如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。   如果 start 或 end 为负数,那么它将被替换为 0。

回到正题,如何解决这个错误呢?

对字符串进行截取(substring, charAt)、转换为字节数组(getBytes),字符数组转换为字符串(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。  


0 0
原创粉丝点击