2016-11-17 5 views
-1

다음 문제가 있습니다. 나는 List TOTAL (size : S)을 가지고 있으며 N 연속 블록으로 나누어야한다. 여기에 코드 :subList는 FOR 루프 내에서 빈 목록을 반환합니다.

int start_index, end_index; 

     for(int i = 0; i < N; i++){ 
      start_index = (S/N)*i; 
      end_index = start_index + (S/N) - 1; 
      List<String> SUBblock = TOTAL.subList(start_index, end_index-1); 
      System.out.println("block "+i+": from "+start_index+" to "+end_index); 
      System.out.println("block "+i+": "+SUBblock .toString()); 
     } 

인덱스가 맞습니다 : 첫 번째 System.out.println이 정상적으로 작동합니다. 그러나 SUBblock은 항상 비어 있습니다. for 루프 외부의 subList 호출이 올바르게 작동합니다. 예를 들어 TOTAL.subList(0,2)은 첫 번째와 두 번째 요소를 예상대로 반환합니다.

여기에 누락 된 것이 있습니까?

+0

무엇이 _'List TOTAL (size : S)'_ ?? 작은 크기로 만들었습니까? –

+0

@Jordi A'List '이름이'TOTAL'이고 크기가'S' – Fab

+0

'end_index - 1'은 의심스러워 보입니다. 'subList'에 전달 된 end index가 포함되어 있지 않다는 것을 알고 있습니까? – Arkadiy

답변

1

시작 및 종료 색인 계산에 실수를했다고 생각합니다. 다음 코드로 시도하십시오.

for(int i = 0; i < N; i++){ 
     start_index = (S/N)*i; 
     end_index = start_index + (S/N); 
     List<String> SUBblock= (TOTAL.subList(start_index, end_index)); 

     System.out.println("block "+i+": from "+start_index+" to "+end_index); 
     System.out.println("block "+i+": "+SUBblock .toString()); 
    } 
관련 문제