Как работает метод nextLine ()

1

Рассмотрим код:

import java.util.*;

public class TestClass
{
  public static void main(String[] args)
  {
      Scanner input= new Scanner ("34\n567");

      while(input.hasNext())
      {
          System.out.println(input.nextLine());
      }

      input.close();
  }
}

выход я получаю:

34
567

Когда я пытаюсь прочитать строку nextLine(), она не должна читать ее так, как она должна заканчиваться только в разделителе строк, а \n не является разделителем строк в Java.

Итак, как это происходит?

  • 1
    Пожалуйста, поделитесь частью кода. Проверьте длину System.getProperty("line.separator")
  • 0
    Что значит «\ n» не является разделителем строк [в Java]? Что тогда ? [при условии, что вы находитесь в Linux]
Показать ещё 3 комментария
Теги:
java.util.scanner

2 ответа

1

Попробуй это

    String s = "a\r\nb";
    for (String str : s.split(System.getProperty("line.separator"))) {
        System.out.println(str);
    }
    System.out.println("Length:"+s.split(System.getProperty("line.separator")).length);

\r\n представляет новую строку.

вывод

 a
 b
 Length:2
  • 0
    +1 Ты спас мой день!
  • 0
    Это на самом деле не отвечает на вопрос OP, поэтому nextLine() работает, даже если пользователь, в зависимости от платформы, возвращает \n или \r\n
Показать ещё 4 комментария
0

nextLine() является базовым в выражении regulare "\ r\n\[\n\r\u2028\u2029\u0085]". Это допускает любой разрыв строки поддерживаемых plattforms java и не ограничивается рамкой этого экземпляра jvm на самом деле работает. Фактически большинство методов в java для обнаружения прерывания линии работают таким образом. Таким образом, не совсем верно, что существует определение того, как должен выглядеть разрыв строки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню