我有以下代码
//Put the collection frequencies into a file
Iterator iter = docFreq.entrySet().iterator();
while(iter.hasNext())
{
Map.Entry tf = (Map.Entry)iter.next();
pw.write((String)tf.getKey());
pw.write("\t");
pw.write((int)tf.getValue());
pw.write("\t");
float fractionofDocs = (int)tf.getValue()/(float)size;
pw.println(fractionofDocs);
}
pw.close();
我看到写入文件的第二个值的乱码输出,即pw.write((int)tf.getValue());
输出是这样的
and õ 0.9607843
of ë 0.92156863
the ê 0.91764706
on Þ 0.87058824
information Ö 0.8392157
如果省略最后一个字段,即在从int
while
值
pw.write("\t");
float fractionofDocs = (int)tf.getValue()/(float)size;
pw.println(fractionofDocs);
任何人都可以告诉我我哪里错了吗?
答案 0 :(得分:1)
Writer.write
有两个重载 - 一个写入单个字符,另一个写入String
。这类似于OutputStream.write
如何写入字节或字节数组。
您正在呼叫Writer.write(int)
,其中int
会将其转换为char
并写入char
。
您希望使用print
代替write
。