-4

代码 :

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

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

我得到了想要的 10.00 ......但它失败了。这是一个错误吗?我知道它必须与那个特殊字符'%'有关......我正在尝试解析文件以进行分析,有人可以帮助我吗?

4

1 回答 1

1

最有可能的错误是在这一行。 -

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

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

于 2013-04-13T23:09:16.443 回答