-2

我正在使用 FileWriter 写入 java 中的文件,但它的行为很奇怪。

try
{
    newFile = new File(typeOfData);
    if (!newFile.exists())
    {
        newFile.createNewFile();
        writer = new FileWriter(newFile);

        for (Map<String, Double> tfidf : tfidfs)
        {
            Set<String> keys = tfidf.keySet();
            Iterator<String> iterator = keys.iterator();

            //int i = 1;
            while(iterator.hasNext())
            {
                String featureValue = iterator.next() + ":" + tfidf.get(iterator.next()) + " ";
                //System.out.print(featureValue);
                writer.write(featureValue);

                //i++;
            }
            writer.write("\n");
            //System.out.println();
            writer.flush();
        }
        //writer.flush();
        writer.close();
    }
}

在 while 循环中,如果,而不是iterator.next(),我使用变量int i = 1i++它写得很好,包含所有值和所有内容。但是当我使用它编写的代码时,它只会创建一个空白文件,其中没有任何内容。我不明白为什么会这样。有什么建议么?

4

1 回答 1

4
String featureValue = iterator.next() + ":" + tfidf.get(iterator.next()) + " ";

你刚刚打next()了两次电话,从Set. 您的结果String featureValue将包含第一个键和第二个键的值。

String key = iterator.next();
String featureValue = key + ":" + tfidf.get(key) + " ";

编辑添加:然后猜测为什么你目前没有输出......你有奇数个键,最后,当第二个没有键时next(),它抛出异常(我'我猜你忽略了),你没有刷新到文件,你没有得到任何输出。如果你有偶数个键......它实际上会“工作”,你只会有一个文件,其中包含你期望的一半的行;)

于 2012-12-22T17:12:01.863 回答