2016-11-17 87 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()); 
    }