在多个阵列列表上使用嵌套循环

时间:2013-07-23 10:22:11

标签: arraylist export-to-excel nested-loops

所以我有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重复相同的值

尝试许多不同的方法会非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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
}

编辑:实际上我现在看到你的错误......两个内部循环总是最终将最后一个元素插入到行单元格中 - 这就是为什么你总是得到相同的值。按照我的建议改变代码,它会起作用。

答案 1 :(得分: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具有相同的大小。