22.4.18 [HackerRank]Java End-of-file

🌱 배경지식

EOF

End-of-file. 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타내는 용어. Java에서 아래의 두가지 방식으로 처리할 수 있다.

1) scanner.hasNext() : 스캐너 객체로 입력값이 들어오는지 여부를 판단하는 함수다. hasNext뒤로 Int, Double, Boolean 등의 자료형을 붙이면 입력값이 그 자료형에 해당할 경우 true 값을 반환하고 아니면 false 값을 반환한다.

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

2) BufferedReader: scanner와 달리 EOF를 처리하는 내장함수는 없다. 다음의 예시처럼 처리한다.

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

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

Java While문

while (조건문) {
    <수행할 문장1>;
    <수행할 문장2>;
    <수행할 문장3>;
    ...
}

조건문이 참인 동안 while문의 수행할 문장들을 반복해서 수행한다.

✏️ 해설 및 분석

EOF에 도달할 때 까지 stdin(System.in)에서 알 수 없는 n줄의 입력을 읽는다.
각 줄에는 줄 번호와 공백 하나를,그리고 입력받은 content를 출력한다.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner sc = new Scanner(System.in); // 새 스캐너 객체를 생성해 입력받는 값(문장)을 받는다.
        int i = 1; // 첫번째 줄에서 1부터 넘버링이 시작된다.
        while(sc.hasNext()){ // hasNext로 입력값이 들어오는지 여부를 판단해 들어오는 경우를 while문의 조건으로 준다.
            System.out.println(i + " " + sc.nextLine()); //문장 앞의 숫자 + 공백 + 입력받은 문자열 전체를 리턴하기 위한 nextLine()함수를 프린트해준다.
            i ++; // i는 하나씩 증가해 나간다. 
        }
    }
}

👉 참고

좋은 웹페이지 즐겨찾기