2017-01-30 5 views
-1

read()가 잘 실행되는 동안 내부에 쓰여지고 할당되면. 그것은 외부에서 사용java의 파일 처리의 read() 함수에서 이러한 구문의 출력이 다른 이유는 무엇입니까?

while((ch=fr.read())!=-1){ 
      System.out.print((char)ch); 
     } 

Output: This is a text. 

그러나 그 경우 암호화 된 출력

while(fr.read()!=-1){ 
      ch=fr.read(); 
      System.out.print((char)ch); 
     } 

Output: hsi et? 

이 동작 뒤에 이유는 무엇의 종류를 준다?

+1

한 번 읽는 중! = 두 번 읽는 중입니다. "암호화 된 종류"의 출력은 단순히 모든 다른 문자입니다. – azurefrog

+0

감사합니다. –

답변

0

read() 메서드는 한 문자를 읽고 다음 문자로 커서를 이동합니다.

처음에는 루프를 읽는 중이지만 두 번째 루프에서는 두 번 읽는 중입니다. 따라서 파일에있는 문자 만있는 경우 첫 번째 루프는 해당 문자를 인쇄하고 두 번째 루프는 조건 블록의 첫 번째 문 다음에 파일의 끝에 도달하므로 ch=fr.read(); 줄은 -1을 반환합니다.