当我运行以下代码时:
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
每个人后跟一个奇怪的符号。男性标志,女性标志等。
我的问题是,它更像是一个奇怪的问题。是什么导致出现这些奇怪的符号?我在期待数字,因为它计算在内。这些符号从哪里拉出来?
答案 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 ,因为此图片代表:
答案 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.out
是PrintStream
。 PrintStream.write(int)
方法将单个字节写入输出流,并指定字节值。所以你不是写0到100的整数,而是写0到100的字节。你可能想要print(int)
而不是write(int)
。