2016-10-06 2 views
0

이 혼란은 Java 스캐너의 nextLine 메서드를 사용하는 것과 같습니다. nextInt 메서드를 먼저 사용하고 숫자를 읽은 다음 nextLine 메서드를 사용하면 현재 줄을 건너 뛰도록 호출해야합니다. 나는 이것을 .txt 파일로 이해할 수있다. 숫자를 읽은 후 ENTER를 입력하면 커서는 다음 줄에 있고 nextLine 메서드를 호출하면 빈 줄이 반환된다. 먼저.개행 문자가 컴퓨터에주는 의미는 무엇입니까?

하지만 컴퓨터 (.txt 파일이 아님)에 대해 ENTER (개행 문자)가 의미하는 바는 무엇이며 컴퓨터가 Enter 키를 입력하면 '\ n'과 같은 문자가 읽히거나 할 수 있습니다. 다른 것.

설명이 어려울 경우 관련 도서를 제안 해주십시오.

+0

"그러나 IO 모델이나 메모리 모델에서 컴퓨터에 Enter (개행 문자)가 무엇을 의미하는지, 그리고 Enter 키를 입력하면 어떻게 될지 생각해보십시오. " - 그 문장은 아주 혼란 ​​스럽네. – Thomas

+0

죄송합니다. 그 문장을 변경합니다. – Micarle

답변

1

줄 바꿈 문자는 문자 시퀀스에서 줄의 끝을 알리는 역할을합니다. 콘솔의 경우 ENTER 키는 라인 버퍼를 소프트웨어로 전송하는 역할을합니다. 그 전에는 문자를 삭제하고 라인을 수정할 수 있습니다. Enter 키를 누르면 전송 된 행에 개행 문자가 표시됩니다.

A "라인은"일반 I/O에 대한 특별한 무관하지만 이미 보았다 :

  • 버퍼 입력 플러시 줄 바꿈에 실제 출력 버퍼링 텍스트 않을 수 있습니다.
  • 전체 숫자를 인식하려면 첫 번째 비 숫자를 읽어야하므로 스캐너는 숫자를 인식하기 위해 전체 행이 필요합니다.

가장 사용되는 라인 엔딩은 다음과 같습니다

리눅스, 안드로이드,에서라도에
  • \n : LF는 = LINEFEED
  • Windows에서
  • \r\n : CR = 복귀 개행 + LF
+0

'nextLine'은 라인 엔딩이없는 (나머지) 행을 전달합니다. 행에 단 하나의 int가 들어 있으면 읽기 위치는 끝에 있지만 nextLine이 호출되지 않으면 줄 바꿈을 건너 뛰지 않습니다. 'Scanner' 클래스는 에러가 발생하기 쉽기 때문에 가능한 경우이를 피하기 위해 API를 찾았습니다. 또한 대체 BufferedReader에는 라인 끝이없는 라인을 반환하는 readLine이 있습니다. 줄 끝을 떨어 뜨리는 것도 좋습니다. 이제 Windows와 Linux는 동일하게 취급 될 수 있습니다. –

+0

nextInt 호출이 ENTER에 의해 생성 된 후에 nextLine을 호출 할 때 빈 줄이 반환된다는 것을 의미합니다. 그것은 nextInt 호출 후에 읽기 위치가 현재 행의 끝에 있고 물론 그것은 비어 있기 때문입니다. 권리? – Micarle

+0

예, 실제로 줄 바꿈을 소모합니다. –

관련 문제