2016-11-17 84 views
-1

我面临以下问题。 我有一个列表TOTAL(大小:S),我需要将它分成N个连续的块。这里代码:JAVA - 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'的结束索引不包括在内吗? – 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()); 
    }