2014-12-30 3 views
-4

ArrayListString으로 변경하고 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) 
+0

디버거에서'string' 변수를 검사했을 때 그 값은 무엇 이었습니까? –

+3

'substring (3,11)'은 무엇을한다고 생각하십니까? –

+0

글쎄, 문제는 길이가 11+가 아닌 문자열의 일부입니다. 정확히 여기서 당신이 성취하려고 시도하는 것이 있다면, 우리는 더 나은 해결책을 향해 당신을 도울 수있을 것입니다. – Obicere

답변

0
string.substring(3,11); 

문자열이 문자열를 시도하는

은 다음을 참조하십시오 그다지 길지 않습니다. 하위 문자열 변수를 결정하는 방법을 변경하십시오. ie

if(string.length > 3) 
    string.substring(3, (string.length -1)); 
+0

문자열이 3 개 이상의 문자를 가지고있는 한 그것은 .. –

+2

마지막 색인은 배타적이므로 절대 마지막 문자를 포함하려면 경계에 대해'[3, string.length]'가됩니다. – Obicere

+0

감사합니다. David! 귀하의 제안이 효과가있었습니다! – Abdou

1

문제는 at - System.out.println (string.substring (3,11))입니다.

변수 문자열의 길이는

for (double i = 1; i < 1000; i++) { 
    nums.add(1/i); 
} 

에 따라 코드의 어느 지점에서 ((3,11)이 string.substring) 실패에서 System.out.println 이상 3입니다.

for (String string : strs) { 
    System.out.println(string); 
    System.out.println(string.substring(3,11); 
} 
+0

안녕하세요, 귀하의 도움에 감사드립니다. 코드를 실행했을 때 이전과 같은 오류가 발생한다고 제안했습니다. 나는에서 System.out.println을 꺼내하지만 ((3,11) string.substring) 나는 그 배열에있는 모든 문자열의 출력 어떻게해야합니까에서 System.out.println (문자열)을두고 : 0.5 0.333333333333333314829616256247390992939472198486328125 을 0.25 0.200000000000000011102230246251565404236316680908203125 0.142857142857142849212692681248881854116916656494140625 0.125 0.111111111111111104943205418749130330979824066162109375 0.1666666666666666574148081281236954964697360992431640625 ...................... – Abdou

+0

은'System.out' 디버거 아니다. –

관련 문제