import java.util.ArrayList;
import java.util.List;public class Split4 {
public static void main(String args[]) {
String Str = "aa-bb-cc-dd";
int i = 0;
List<String> l = new ArrayList<String>();
try {
while (Str.indexOf("-") > -1) {
l.add(Str.substring(i, Str.indexOf("-",i)));
i = Str.indexOf("-",i) + 1;//
}
} catch (RuntimeException e) {
e.printStackTrace();
}
System.out.println(l); }
}java.lang.StringIndexOutOfBoundsException: String index out of range: -10
at java.lang.String.substring(String.java:1938)
at mianshiti.Split4.main(Split4.java:13)[aa, bb, cc]那个给分析下异常?

解决方案 »

  1.   

    我靠,又发一个帖子,分真多。
    看Split4.java:13
      

  2.   

    import java.util.ArrayList;
    import java.util.List;public class Split4 {
        public static void main(String args[]) {
            String Str = "aa-bb-cc-dd";
            int i = 0;
            List<String> l = new ArrayList<String>();
                try {
                    while (Str.indexOf("-", i) > -1) {
                        l.add(Str.substring(i, Str.indexOf("-",i)));
                        i = Str.indexOf("-",i) + 1;//
                    }
                } catch (RuntimeException e) {
                    e.printStackTrace();
                }
            System.out.println(l);    }
    }while语句一直为true
      

  3.   

    第三次分割的时候  i= 9了 开始执行这句
    l.add(Str.substring(i, Str.indexOf("-",i))); 
    此时可写成l.add(Str.substring(9, Str.indexOf("-",9)));
    Str.indexOf("-",9)找不到 返回-1
    l.add(Str.substring(9,-1);则截取的字符串长度为 -1-9 = -10;
      

  4.   

    当i= 9后 条while里面的条件还为真 那么就会进入while继续执行 以至抛出越界异常...
      

  5.   

    while (Str.indexOf("-",i) > -1) {
    加上红色部分