Привет! По материалам первых лекций JR написал следующий код. import java.util.Scanner; public class Main { public static void main(String[] args) { String s = "Люблю тебя, Петра творенье,\n" + "Люблю твой строгий, стройный вид,\n" + "Невы державное теченье,\n" + "Береговой ее гранит"; System.out.println("Длина s = " + s.length() + " симолов"); Scanner scan = new Scanner(s); while (scan.hasNext()) { System.out.println(scan.nextLine()); System.out.println("внутри while"); } scan.close(); } } Вывод получается такой: Длина s = 105 симолов Люблю тебя, Петра творенье, внутри while Люблю твой строгий, стройный вид, внутри while Невы державное теченье, внутри while Береговой ее гранит внутри while Таким образом. s.length() -- честным образом сообщает нам, что s -- это объект типа String длинной 105 символов. Вполне понятно. Мало ли, что там есть символы перевода строки -- это ОДНА СТРОКА из такого вот набора разных символов. А вот scan.nextLine() c какой-то радости считает, что это РАЗНЫЕ СТРОКИ. Что видно в выводе. Алогичность всегда пугает. Почему это работает так странно?