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 重复相同的值

任何帮助将不胜感激尝试了许多不同的方法。

4

2 回答 2

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 具有相同的大小。

于 2013-07-23T10:58:46.207 回答
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
}

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

于 2013-07-23T10:31:10.667 回答