好奇一些Java out.Write输出

时间:2011-06-21 15:40:15

标签: java loops while-loop

当我运行以下代码时:

int i = 0

 try {
        fstream = new FileWriter(filename);
        BufferedWriter out = new BufferedWriter(fstream);
while (i < 100) {
            out.write("My Name is Bobby Bob");
            out.write(i);
            out.newLine();
            i++;
}
        out.flush();
        out.close();
    } catch (IOException e) {
        e.getClass();
    }

我在输出文件中得到以下内容:

My Name is Bobby Bob 

×100

每个人后跟一个奇怪的符号。男性标志,女性标志等。

我的问题是,它更像是一个奇怪的问题。是什么导致出现这些奇怪的符号?我在期待数字,因为它计算在内。这些符号从哪里拉出来?

4 个答案:

答案 0 :(得分:2)

out是RandomAccessFile?

我认为您使用的是write(byte)而不是write(String),因此您正在写字节X,请参阅ASCII TABLES以进行表示。

尝试

write(""+i);

看看BufferedWriter java api:

http://download.oracle.com/javase/1.4.2/docs/api/java/io/BufferedWriter.html#write(int)

它表示它会写出char的整数表示,供您理解。

如果您要打印值 0 ,则必须写入 48 ,因为此图片代表: http://www.asciitable.com/index/asciifull.gif

答案 1 :(得分:1)

写作时

out.write(i);

它将(char) i不是i中的数字写为文本。

如果您想将i写为数字,请使用print

out.print(i);

out.write(String.valueOf(i));

out.write(""+i);

答案 2 :(得分:1)

看起来您正在编写由给定的int值指定的单个字符,而不是变量i的字符表示。

答案 3 :(得分:1)

System.outPrintStreamPrintStream.write(int)方法将单个字节写入输出流,并指定字节值。所以你不是写0到100的整数,而是写0到100的字节。你可能想要print(int)而不是write(int)