问题描述
今天在我做大数据大作业时,爬取目标数据,出现了一个奇葩的细节问题。
我要爬取对象包含年龄,所以对数据做了如下处理:
String age_str=element_age.text();
int index=age_str.indexOf("岁");
System.out.println(age_str+"-index="+index);
age=Integer.parseInt(age_str.substring(0,index));
截取前面数值部分,然后转为整型,理论上没啥问题。但。。。
输出到报错的样例时,如下:
16岁-index=2
43岁-index=2
28岁-index=2
28岁-index=2
24天-index=-1
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1967)
at com.parse.Parse.getSpecific(Parse.java:86)
at com.main.Test.main(Test.java:38)
望天,小屁孩误我。。
问题解决
之后修改了逻辑,如下:
if (index==-1){
age=0;
}else {
age=Integer.parseInt(age_str.substring(0,index));
}
测试结果通过:
25岁-index=2 age=25
16岁-index=2 age=16
43岁-index=2 age=43
28岁-index=2 age=28
28岁-index=2 age=28
24天-index=-1 age=0
5岁-index=1 age=5
21岁-index=2 age=21
这细节醉了。