定义了一个字符串str="123456789";
希望能展示的效果如下:
9
8
7
6
5
4
3
2
1public class TestSubString {
public static void  main(String args[]) {
String str = "123456789";


while (str.length() > 0) {
System.out.println(str.substring(str.length()-1, 1));
str = str.substring(0, str.length()-1);
}
}
}程序报错:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -7
at java.lang.String.substring(String.java:1937)
at TestSubString.main(TestSubString.java:7)是下标越界问题,但是我不明白这 -7 是怎么来的? 请各位高手指点一下; 小弟在此先谢谢了

解决方案 »

  1.   


    if (beginIndex > endIndex) {
        throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
    }substring的实现代码片段,按照你写的代码那么endIndex = 1,beginIndex = 9 - 1 = 8
    1-8 = -7 异常就这么抛出来了
      

  2.   

    我知道怎么了,因为你的循环的是str.length()但是你在循环里有改变了str.length()
    你可以这样啊public class TestSubString {
    public static void main(String args[]) {
    String str = "123456789";
    for(int i=0;i<9;i++){
    System.out.println(str.substring(str.length()-1,(9-i)));
    str=str.substring(0, str.length()-1);
    }
    }
    }