2014-02-18 80 views
0

是有可能這樣做,他們使用之後只有一個for循環,而不是2:只使用1 for循環

int index = ws.getLastRowNum() + 1; 
List<AdditiveList> list=new ArrayList<>(); 

for(int i=1; i<index; i++){ 
     list.add(new AdditiveList()); 
} 

for(AdditiveList x: list){ 
     Row row=null; 
     if (rowIterator.hasNext()) 
      row=rowIterator.next(); 
     x.inputAdditiveData(row); 
     x.outputData(); 
} 
+0

這裏有一個提示:保持您的縮進一致,使您的代碼更具可讀性。乍一看,它看起來是循環嵌套。第二個循環不應該縮進到那麼遠。 –

回答

4

我認爲這是可能的。

試試這個 -

int index=ws.getLastRowNum()+1; 
List<AdditiveList> list=new ArrayList<>(); 
for(int i=1; i<index; i++){ 
    AdditiveList additiveList = new AdditiveList(); 
    Row row = null; 
    if(rowIterator.hasNext()) 
     row = rowIterator.next(); 
    additiveList.inputAdditiveData(row); 
    additiveList.outputData(); 
    list.add(additiveList); 
} 

如果rowIterator.hasNext()返回false,在這種情況下,名單將增加空值。如果這是正確的不按照要求,那麼你應該省略像下面的零 -

for(int i=1; i<index; i++){ 
    if(rowIterator.hasNext()){ 
     Row row = rowIterator.next(); 
     AdditiveList additiveList = new AdditiveList(); 
     additiveList.inputAdditiveData(row); 
     additiveList.outputData(); 
     list.add(additiveList); 
    }   
} 
+0

該死的應該想到的那個 謝謝 – Anish6595

+1

現在不用擔心問題了:) –

+0

這和原始代碼完全一樣,但是原始代碼和這裏有一個問題:如果rowIterator.hasNext()返回false,那麼你將空值附加到列表的末尾。也許這就是你想要的,但是停止添加到列表中可能更有意義。 –