Любопытно, какой-то выход Java. Записать вывод - PullRequest
0 голосов
/ 21 июня 2011

Когда я запускаю следующий код:

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 ]

2 голосов
/ 21 июня 2011

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)

он говорит, что записывает целочисленное представление символа для вашего понимания.

Если вы хотите напечатать значение 0 , вы должны написать 48 , так как это изображение представляет: http://www.asciitable.com/index/asciifull.gif

1 голос
/ 21 июня 2011

System.out является PrintStream.Метод PrintStream.write(int) записывает один байт в выходной поток с указанным байтовым значением.Таким образом, вы не пишете целые числа от 0 до 100, а пишете байты от 0 до 100. Возможно, вы хотите print(int) вместо write(int).

1 голос
/ 21 июня 2011

Похоже, что вы пишете отдельные символы, заданные заданным значением int, а не символьное представление переменной i.

1 голос
/ 21 июня 2011

Когда вы пишете

out.write(i);

, он записывает (char) i, а не число в i как текст.

Если вы хотите написать i в качестве числа, используйте print

out.print(i);

или

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

или

out.write(""+i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...