Java сканер правильно читает \ n в строках, но не при сканировании файлов? - PullRequest
0 голосов
/ 29 апреля 2020

Я кодирую программу, которая получает строки из входного текстового файла. Предполагается, что это будет набор строк в одной строке, разделенных символом новой строки. Итак, мой входной файл выглядит следующим образом:

0110\n011\n0111\n100001

Однако, когда я go распечатываю каждую строку, он получается как одна целая строка, включая символы новой строки - '0110 \ n011 \ n0111 \ n100001 '

Это мой код - он хорошо работает для сканера, когда это строка c, но не из файла.

File input = new File(input.txt);
Scanner scanner = new Scanner(input);

while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
}

Когда я изменяю сканер для чтения строк, например, сканер сканер = новые сканеры для строки s = "0110 \ n011 \ n0111 \ n100001", он работает правильно и выводит 4 строки, что означает, что он распознает символ \ n, как например:

String s = "0110\n011\n0111\n100001";
Scanner scanner = new Scanner(s);

while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
}

Единственное, что меня сдерживает, это то, что мы должны разделить строки входного файла на \ n . Это требование для нашего проекта.

Есть идеи, почему это происходит? Мой текстовый файл неправильный, есть ли способ разделить его на \ n? Сканер считывает строки в файлах иначе, чем просто строки c? Должен ли я просто переключиться на BufferedReader? Я не могу обернуть голову вокруг этого. Я прочитал несколько форумов и руководств и ничего не смог найти. Если я могу что-то сделать или предоставить что-нибудь еще, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 29 апреля 2020

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

...