2013-07-23 55 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