java.lang.StringIndexOutOfBoundsException

时间:2013-04-13 23:05:33

标签: java file parsing substring

代码:

for(int i = 0; i < rate.length; i++){
                if(i == 0 | i == 4 | i == 8 | i == 12 | i == 18 | i == 22 | i == 26 | 
                        i == 30 | i == 34){
                    System.out.println(rate[i]);
                    String parsedRate = rate[i].substring(0, 5);
                    System.out.println(parsedRate);
                    double rt = Double.parseDouble(parsedRate);
                    if(rt > max){
                        max = rt;
                    }
                }
            }

输出:

10.00% 10.00

线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5     at java.lang.String.substring(String.java:1907)     在parserTax.main(parserTax.java:48)

我得到了理想的10.00 ......但是它失败了。这是一个错误吗?我知道它必须对那个特殊字符'%'做一些事情......我试图解析一个文件进行分析,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

最有可能的错误就在这一行.-

String parsedRate = rate[i].substring(0, 5);

您正尝试从{0}获取从{0}到第5位的子字符串。您是否检查过所有rate[i]个字符串至少有6个字符?记住输出,似乎在rate条件为真(if)时第二次抛出异常,因此i == 4可能包含空字符串。