【发布时间】:2017-07-04 14:36:22
【问题描述】:
我有这个简单的 Java 代码,它给出了以下错误: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-4
代码是:
String date = "14000101";
String repayDate = date.substring(0, 4)+"-"+date.substring(5, 2)+"-"+date.substring(6, 2);
字符串的长度为 8,但从第二部分开始时会出现错误。
有什么想法吗?
谢谢!
【问题讨论】:
-
读取 java.lang.String.substring(int, int) 的 javadoc
-
根据文档;抛出
IndexOutOfBoundsException- 如果 beginIndex 或 endIndex 为负,如果 endIndex 大于 length(),或者 beginIndex 大于 startIndex -
子字符串方法的第二个参数不是长度而是子字符串的结束位置。所以,你想要这样的东西:date.substring(0, 4)+"-"+date.substring(5, 7)+"-"+date.substring(6, 8);
-
这里真正有趣的问题是:为什么我们对 ArrayIndexOutOfBounds 和 NPE 有这么大的现有问题......但不是这些东西?
标签: java