String index out of range: 100 报错详解与解决方案

问题出错情况:字符串截取长度,没有那么长的长度所以截取失败。

在这里进行debug之后可以看到,异常在substring中:

也就是判断字符串的时候报错:具体原因就是string字符串indexof的值本身只有5,然后在这里去取其第100 个字符作为截止,因此就会报这个错;

 

知识点:主要是堆String概念不清。下面针对字符串相关概念做一个简介。

 

 

针对上述问题解决办法:


发布了142 篇原创文章 · 获赞 52 · 访问量 8万+
展开阅读全文

java.lang.StringIndexOutOfBoundsException报错的原因?

01-12

while (stringBuffer.indexOf("AAC1") != -1 && stringBuffer.indexOf("EEED") != -1) {                     LogUtil.logShipment(TAG, "AA 接受到的数据: " + stringBuffer.toString());                     if (stringBuffer.indexOf("AAC1", 0) < (stringBuffer.indexOf("EEED", 0) + 4)){                         String s = stringBuffer.substring(stringBuffer.indexOf("AAC1",0),stringBuffer.indexOf("EEED",0) + 4);                         if (s != null && !s.isEmpty()) {                              mHandler.post(new ScanEndRunnable(s));                             stringBuffer.delete(stringBuffer.indexOf("AAC1", 0), stringBuffer.indexOf("EEED", 0) + 4);                         }                     } else {                         stringBuffer.delete(0, stringBuffer.indexOf("AAC1", 0));                     }                 } 报错如下 java.lang.StringIndexOutOfBoundsException: length=0; regionStart=-1; regionLength=4         at java.lang.AbstractStringBuilder.startEndAndLength(AbstractStringBuilder.java:211)         at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:616)         at java.lang.StringBuffer.substring(StringBuffer.java:718) String s = stringBuffer.substring(stringBuffer.indexOf("AAC1",0),stringBuffer.indexOf("EEED",0) + 4);为什么会报这种错呢?代码哪出问题了? 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览