protected Void doInBackground(Void... voids) {
...
ABV = elem.select("td > span.muted").text();
Log.d("myLOG_ABV", ABV);
Log.d("myLOG_ABVlength", String.valueOf(ABV.length()));
/*String temp_ABV = ABV.substring(ABV.length()-6, ABV.length());*/
... }
结果
D / myLOG_ABV:俄罗斯河酿酒公司American Wild Ale | 7.50%D / myLOG_ABV长度:55
然后,我编写了注释代码 .
...
ABV = elem.select("td > span.muted").text();
Log.d("myLOG_ABV", ABV);
Log.d("myLOG_ABVlength", String.valueOf(ABV.length()));
***String temp_ABV = ABV.substring(ABV.length()-6, ABV.length());***
...
结果
引起:java.lang.StringIndexOutOfBoundsException:length = 0;指数= -6
为什么我在这个substring方法中遇到StringIndexOutOfBoundsException错误?
我在带有注释的代码中得到了'ABVlength:55'的结果 .
但是在取消注释后,我得到了StringIndexOutOfBoundsException .
说真的,我用这段代码打了7小时30分钟 .
1 回答
所以我们有:
在这种情况下,如何获得-6的指数?
ABV
必须为零长度,即""
.情况可能是
ABV
应至少有六个字符,但这表明其他地方存在错误 .该怎么办?
首先,验证您的输入 .
在某些地方你通常会想要这样的东西:
接下来找到该值的来源并修复错误 .
看起来你正在解析某种外部文档 . 在这种情况下,您可能希望处理更宽松: