본문 바로가기
코딩테스트/programming_JAVA

[Java] baekjoon_10951번 : EOF

by prometedor 2021. 9. 3.
  • EOF(End of File) 처리
EOF -> 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타냄

 

  • Scanner 클래스 사용
Scanner sc=new Scanner(System.in);

while(sc.hasNextLine()){ // 문자 입력의 경우
  sc.nextLine(); // '\n'을 포함하는 한 라인을 읽도록
}

while(sc.hasNextInt()){ // int타입 입력의 경우
  sc.nextInt(); // int 타입으로 입력받음
}

 

  • BufferedReader 클래스
BufferedReader br=new BufferedReader(new InputStreamReader(System.in);

String str="";

while((str=br.readLine() != null){
  if(str == null){
    break;
  }
}
cf. StringTokenizer
StringTokenizer -> 문자열을 입력하는 것이 아닌 받은 문자열을 가공하는 역할을 함
단순히 가공한 문자열 자체에서 원하는 행위를 함(EOF를 처리하는 것은 아님)

 

  • 이 문제에서의 활용
방법 1
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

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));

    StringBuilder sb=new StringBuilder();
    String str="";

    while((str=br.readLine()) != null) {
      StringTokenizer st=new StringTokenizer(str);

      int A=Integer.parseInt(st.nextToken());
      int B=Integer.parseInt(st.nextToken());

      sb.append((A+B)+"\n");
    }
    br.close();
    bw.write(sb.toString());
    bw.flush();
    bw.close();
  }
}

 

방법 2
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

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));

    StringBuilder sb=new StringBuilder();

    while(true) {
      String str=br.readLine();

      if(str == null) {
        break;
      }

      StringTokenizer st=new StringTokenizer(str);

      int A=Integer.parseInt(st.nextToken());
      int B=Integer.parseInt(st.nextToken());

      sb.append((A+B)+"\n");
    }
    br.close();
    bw.write(sb.toString());
    bw.flush();
    bw.close();
  }
}