\ n не будет работать, не переходя на новую строку - PullRequest
4 голосов
/ 07 мая 2011

Я создаю небольшую программу, которая сохраняет значение int в текстовом файле, сохраняет его и загружает при следующем запуске программы.Теперь мне нужно еще 3 логических значения для хранения в текстовом файле, я пишу вещи в файл с помощью

    public Formatter x;

x.format("%s", "" + m.getPoints() + "\n");

Всякий раз, когда я хочу перейти на новую строку в моем текстовом файле, с \ n,он не перейдет на новую строку, он просто напишет его непосредственно за значением int.Я попытался сделать и

        x.format("%s", "" + m.getPoints() + "\n");
    x.format("%s", "" + m.getStoreItem1Bought() + "\n");

и

    x.format("%s%s", "" + m.getPoints() + "\n", "" + m.getBought() + "\n");

, но оба они просто напишут логическое значение непосредственно за значением int, не начиная новую строку.Любая помощь по этому поводу?

Я использую 64-битную Windows 7 Ultimate, и мой текстовый редактор Eclipse, я запускаю весь код также с Eclipse.

Ответы [ 5 ]

7 голосов
/ 07 мая 2011

Более конкретно, я бы порекомендовал использовать:

x.format("%d%n%s%n", m.getPoints(), m.getStoreItem1Bought());
5 голосов
/ 07 мая 2011

Используйте это вместо:

public static String newline = System.getProperty("line.separator");

Обе эти опции работают.Ваша проблема в том, как вы форматируете вывод:

System.out.format("%s" + newline + "%s" + newline, "test1", "test2");
System.out.format("%s%n%s", "test1", "test2");

Вывод:

test1
test2
test1
test2
3 голосов
/ 07 мая 2011

Попробуйте использовать %n вместо \n при использовании формата. Подробнее об этом см. API Formatter и найдите на этой странице «разделитель строк», и вы увидите.

1 голос
/ 07 мая 2011

Здесь нет проблем:

System.out.format ("first: %s%s", "" + x + "\n", "" + y + "\n");

Хотя я бы предпочел интегрировать \ n в формат String, а не значения:

System.out.format ("second: %s\n%s\n", x, y);

Использование Formatter.format работаетто же самое.

0 голосов
/ 07 мая 2011

Ну, ваш синтаксис, безусловно, довольно .. интересный.Зачем использовать метод форматирования, если вы все равно просто соединяете строку?Также, поскольку вы нигде не говорите, какой поток вы используете, мы должны немного угадать, но в любом случае.

В любом случае, я держу пари, что 1. вы используете Windows и 2. что редактор (я держал париБлокнот), который вы используете, реагирует только на \ r \ n, так как это правильный перевод строки для Windows.Чтобы исправить это, НЕ используйте жесткий код \ r \ n в своем коде, но вместо этого используйте% n и правильно используйте функцию printf (то есть не объединяйте строку!).

В противном случае, если вам действительно нужно собрать строку:

String newline = System.getProperty("line.separator");
x.format("%s", "" + m.getPoints() + newline);

будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...