[JAVA]

JAVA EOF (scanner + buffered reader)

지기음 2022. 11. 2. 13:44

EOF란 end of file 더이상 입력 값이 없을 떄 콘솔을 종료하라는 의미이다. 
java에서 eof는 스캐너와 버퍼리더로 처리할 수있다. 스캐너의 장점은 쉽게 코딩할 수 있는 것이지만 메모리를 너무 많이 차지한다. 버퍼리더는 어렵지만 메모리를 많이 사용하지 않는다. 우선 scanner를 활용한 eof를 알아보자!

import java.util.Scanner;

public class eofPractice {

	public static void main(String[] args) {
		Scanner ss = new Scanner(System.in);
		while(ss.hasNextInt()) {
			System.out.println(ss.nextInt());
		}
	}

}

hasNextInt란 입력받은 수가 정수면 true 그 이외는 false이다. 
따라서 정수이외의 문자를 입력받으면 자동 종료되는 코드이다. 

주의할 점은 enter키도 정수로 판단하는 듯하여 enter만 누르면 자동 종료되지 않는다. 

 

다음으로는 버퍼리더를 이용한 eof이다. 

import java.io.*;
public class eofPractice2 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String n = "";
		while((n=br.readLine())!=null && !n.isEmpty()) {
			bw.write(n);
		}
		
		bw.close();
	}

}

처음엔 익숙하지 않아서 힘들었는데 자주 쓰다보니 편해졌다. while문 안에서 입력값이 없지 않다면 계속 돌아간다.
(백준 사이트와 같은 파일을 받아서 하는 경우 null같으로 하면 되지만 나와같은 노트북에서 코딩하는 사람이라면 isEmpty()로 처리해주어야 한다.)

-->java에서 eof란 별거 아니라 늘 알고 있던 함수로 처리하면 되네! 

'[JAVA]' 카테고리의 다른 글

Abstraction + @ (추상화와 그 외의 중요한 것들)  (0) 2023.01.17
NullPointerException  (0) 2022.12.22
discord로 IntelliJ하는거 티내는 방법  (0) 2022.12.21
java char to int  (0) 2022.12.21
자바 쓰레드 synchronized  (0) 2022.10.31