【发布时间】:2014-12-30 20:39:15
【问题描述】:
我目前正在开发以下程序,试图将Double 的ArrayList 更改为String,然后显示String Array 的每个元素的substring(3,11)。
请看以下内容:
ArrayList<Double> nums = new ArrayList<Double>();
ArrayList<String> strs = new ArrayList<String>();
for (double i = 1; i < 1000; i++) {
nums.add(1/i);
}
for (Double double1 : nums) {
BigDecimal bd = new BigDecimal(double1);
strs.add(bd.toString());
}
for (String string : strs) {
System.out.println(string.substring(3,11);
}
但问题是每次我运行这个程序时,我都会得到以下信息:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
at java.lang.String.substring(Unknown Source)
at AnotherTestClass.main(AnotherTestClass.java:28)
【问题讨论】:
-
当您在调试器中检查名为
string的变量时,它的值是多少? -
你认为
substring(3,11)会做什么? -
问题是一些字符串的长度不是 11+。您究竟想在这里完成什么,我们也许可以帮助您找到更好的解决方案。
-
substring正在按预期工作。首先阅读文档以了解其行为方式。程序员不会白白写文档。 -
大家好,感谢您的帮助! David Coler 的建议帮助我解决了这个问题。我知道这是我的代码错误,而不是子字符串函数本身。使用 string.length()-1 作为 EndIndex 有很大帮助。谢谢!