java.lang.StringIndexOutOfBoundsException

问题描述:

代码:java.lang.StringIndexOutOfBoundsException

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:字符串索引超出范围:5 at java.lang.String.substring(String.java:1907) at parserTax.main(parserTax.java:48)

我正在获得所需的10.00 ...但后来失败。这是一个错误?我知道它必须用特殊字符'%'做一些事情......我试图解析一个文件进行分析,任何人都可以帮助我吗?

+0

我明白错误的含义是什么......我想知道为什么当'%'字符出现时仍然出现错误 –

+1

小提示:您可以替换if(i == 0 | i == 4 | i == 8 | i == 12 | i == 18 | i == 22 | i == 26 | i == 30 | i == 34){'with'if(i%4 == 0 && i> = 0 && i Pshemo

最有可能的错误是在这个line.-

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

你试图从位置得到rate[i]一个subtring 0到5是否检查所有rate串至少有6个字符?记住输出,看起来第二次出现异常(if)条件为真(i == 4),因此rate[4]可能包含空字符串。

+0

first rate [i] is 10.00% second output is showing the parsed rate [i],but then it fail –

+0

哈哈等待我想我明白你的意思.... jeez谢谢你我即将尝试 –

+0

我猜测率[1]包含10.00,只有5个字符:) – ssantos