Рассмотрим код:
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.
Итак, как это происходит?
Попробуй это
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
nextLine()
работает, даже если пользователь, в зависимости от платформы, возвращает \n
или \r\n
nextLine() является базовым в выражении regulare "\ r\n\[\n\r\u2028\u2029\u0085]". Это допускает любой разрыв строки поддерживаемых plattforms java и не ограничивается рамкой этого экземпляра jvm на самом деле работает. Фактически большинство методов в java для обнаружения прерывания линии работают таким образом. Таким образом, не совсем верно, что существует определение того, как должен выглядеть разрыв строки.
System.getProperty("line.separator")