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);
        }
}

エクセルでの出力です

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

配列が常に同じサイズの場合、次のように記述できます。

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
}

編集:実際に私はあなたの間違いを今見ています... 2 つの内側のループは常に最後の要素をその行セルに挿入することになります。これが、常に同じ値を取得している理由です。私が提案したようにコードを変更すると、うまくいきます。

于 2013-07-23T10:31:10.667 に答える
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 に答える