22.4.18 [HackerRank]Java End-of-file


🌱 背景知識


EOF


End-of-file. データソースから読み込むデータがないことを示します.Javaでは、次の2つの方法で処理できます.
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:スキャナーと異なり、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から未知のn行入力が読み込まれます.
行ごとに行番号とスペースを出力し、入力した内容を出力します.
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는 하나씩 증가해 나간다. 
        }
    }
}

👉 リファレンス

  • https://steady-coding.tistory.com/227
  • https://deftkang.tistory.com/55