【问题标题】:PrintWriter garbled outputPrintWriter 输出乱码
【发布时间】:2015-02-08 18:35:45
【问题描述】:

我有以下代码

    //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

如果最后一个字段被省略,即从 while 中删除这些行之后,我可以看到第二个字段打印为 int

pw.write("\t");
float fractionofDocs = (int)tf.getValue()/(float)size;
pw.println(fractionofDocs);

谁能告诉我哪里错了?

【问题讨论】:

  • pw.println("" + fractionofDocs);pw.println(String.valueOf(fractionofDocs)); 与您打印的所有其他号码相同。
  • @HovercraftFullOfEels 谢谢。它奏效了。

标签: java io printwriter


【解决方案1】:

Writer.write 有两个重载 - 一个写入单个字符,一个写入 String。这类似于OutputStream.write 写入字节或字节数组的方式。

您正在调用Writer.write(int),它接受int,将其转换为char 并写入char

您想使用print 而不是write

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多