定义了一个字符串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 是怎么来的? 请各位高手指点一下; 小弟在此先谢谢了
希望能展示的效果如下:
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 是怎么来的? 请各位高手指点一下; 小弟在此先谢谢了
if (beginIndex > endIndex) {
throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
}substring的实现代码片段,按照你写的代码那么endIndex = 1,beginIndex = 9 - 1 = 8
1-8 = -7 异常就这么抛出来了
你可以这样啊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);
}
}
}