2013-07-23 58 views
0

所以我有3名數組列表和它們都具有相同的尺寸,我想將它們打印在一個Excel文件,但工作在IP和GEO只在返回的第一個值並結束。使用多個陣列嵌套循環列出

這是我的代碼:

for (String url : IPGrabber.URLArray) { 
     Row row = sheet.createRow(rownum++); 
     row.createCell(0).setCellValue(url); 
     for (String ip : IPGrabber.IPArray) { 
      row.createCell(1).setCellValue(ip); 
     } 
     for (String geo : GEOLookup.GEOArray) { 
      row.createCell(2).setCellValue(geo); 
     } 
} 

這是Excel

http://www.google.com 199.59.148.82 United States 
http://www.google.com 199.59.148.82 United States 
http://www.mcbay.net 199.59.148.82 United States 
http://www.facebook.com 199.59.148.82 United States 
http://twitter.com 199.59.148.82 United States 

輸出正如你可以看到URLArray和IPArray是repeatign相同的值

任何幫助將是很大的讚賞嘗試了許多不同的方法。

回答

0

你錯了for循環。你必須做類似的東西:

類似Java的語法:

for (int i = 0; i < IPGrabber.URLArray.size(); i++) 
{ 
Row row = sheet.createRow(rownum++); 
row.createCell(0).setCellValue(IPGrabber.URLArray.get(i)); 
row.createCell(1).setCellValue(IPGrabber.IPArray.get(i)); 
row.createCell(2).setCellValue(GEOLookup.GEOArray.get(i)); 
} 

隨着ArrayList中具有相同的尺寸。

+0

工作完美!謝謝 :) – TehBawz

0

如果陣列始終是相同的大小,你可以寫這樣的:

Java示例

for (int i = 0; i < IPGrabber.URLArray.getSize(); i++) 
{ 
    String url = IPGrabber.URLArray.elementAt(i); 
    String ip = IPGrabber.IPArray.elementAt(i); 
    String geo = GEOLookup.GEOArray.elementAt(i); 

    // TODO: code to insert into the cell 
} 

編輯:其實我現在看你的錯誤......兩個內部循環將總是最終將其最後一個元素插入該行的單元格 - 這就是爲什麼你總是得到相同的值。按照我的建議更改代碼,它會起作用。

+0

你是什麼意思元素在這個聲明? – TehBawz

+0

elementAt(index)與get(index)基本相同 - 它通常在Java中使用,並且您從未說過您使用過哪種語言,因此我使用Java風格編寫了回覆。 – munyul

+0

現在有道理,謝謝。 – TehBawz