我目前正在处理以下计划,尝试将ArrayList
Double
更改为String
,然后显示substring(3,11)
String Array
{1}}。
请参阅以下内容:
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)
答案 0 :(得分:1)
问题在于 - System.out.println(string.substring(3,11));
根据
,代码中任何一点的变量字符串长度不超过3for (double i = 1; i < 1000; i++) {
nums.add(1/i);
}
System.out.println(string.substring(3,11))失败。尝试打印字符串值以理解
for (String string : strs) {
System.out.println(string);
System.out.println(string.substring(3,11);
}
答案 1 :(得分:0)
string.substring(3,11);
您尝试子串的字符串不是那么长。改变你决定子串变量的方式。即
if(string.length > 3)
string.substring(3, (string.length -1));