반복문 A+B -4를 풀 때 언제 종료를 해줘야 할 지 알 수 없어서 고민하던 중 질문 게시판에 나와 같은 고민을 하는 질문글을 보았다. 

EOF(End of File)이란?

더 이상 읽을 수 있는 데이터가 없음을 나타내는 용어로 알고리즘 문제를 풀 때는 주로 입력값을 얼마나 받을 지 명시하지 않을 경우 사용한다.

 

EOF의 사용법

1.Sanner 클래스: hasNext() 사용

=입력된 토큰이 있으면 true, 그렇지 않을 경우 false 반환

Scanner scan = new Scanner(System.in);
		
while(scan.hasNext()) {
  System.out.println(scan.nextLine());
}

while(scan.hasNext()) {
  sc.next();
}

 

2.BufferedReader 클래스 :내장 함수가 없다. StringTokenizer의 경우 문자열을 입력하는 것이 아닌 입력받은 문자열을 가송하는 역할로 EOF를 철리한다고 보기 어렵다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";

while((input = br.readLine()) != null) {
  // 이후 로직 전개.
}

while((input = br.readLine()) != null && !input.isEmpty()) { ... }

백준: 반복문 A+B -4

isEmpty(): 빈 문자열인지 확인=> 안 쓰면 JAVA에서 오류

package practice;
import java.util.*;
import java.io.*;
public class Main {
	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 s;
		
		while((s = br.readLine())!=null) {
			StringTokenizer st= new StringTokenizer(s);
			if(s.isEmpty()) break;
            
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			bw.write((A+B)+"\n");		
		}
		bw.flush();
	}
}

+ Recent posts