子串函数不会产生所需的结果

时间:2014-12-30 20:39:16

标签: java substring

我目前正在处理以下计划,尝试将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)

2 个答案:

答案 0 :(得分:1)

问题在于 - System.out.println(string.substring(3,11));

根据

,代码中任何一点的变量字符串长度不超过3
for (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));