Java EOF(End Of File)

BaeSeBinยท2024๋…„ 12์›” 27์ผ

๐Ÿ˜ŠEOF

EOF๋Š” End of File ์ด๋ผ๋Š” ๋œป์œผ๋กœ ํŒŒ์ผ์ด๋‚˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ์ž„. ์ฆ‰, ๋” ์ด์ƒ ์ฝ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ์‹ ํ˜ธ์ž„.
์ฝ˜์†” ์ž…๋ ฅ์ด๋‚˜ ํŒŒ์ผ ์ž…๋ ฅ์—์„œ ๋ฐ์ดํ„ฐ์˜ ๋์„ ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋จ.

๐Ÿ˜ŠEOF ๊ฐ์ง€ ๋ฐฉ๋ฒ•

1. Java์—์„œ EOF ๊ฐ์ง€
ํŒŒ์ผ ์ฝ๊ธฐ :
ex) BufferedReader.readLine()์ด null์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด EOF
ex) Scanner.hasNestLine()์ด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด EOF
์ฝ˜์†” ์ž…๋ ฅ :
ex) EOF๋Š” Scanner.hasNext() ๋˜๋Š” Scanner.hasNextLine()์„ ํ†ตํ•ด ๊ฐ์ง€

๐Ÿ˜ŠScanner.hasNext() vs Scanner.hasNextLine() ์ฐจ์ด์ 

๐ŸงScanner.hasNext()

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ๋‹ค์Œ ํ† ํฐ(๊ณต๋ฐฑ์ด๋‚˜ ๊ฐœํ–‰์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฐ์ดํ„ฐ)์ด ์žˆ๋Š”์ง€ ํ™•์ธ.
๋‹ค์Œ ํ† ํฐ์ด ์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•จ

๐ŸงScanner.hasNextLine()

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ๋‹ค์Œ ์ค„์ด ์žˆ๋Š”์ง€ ํ™•์ธ. ์ค„ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋ฉฐ, ๊ฐœํ–‰(์ค„๋ฐ”๊ฟˆ) ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘ํ•จ.
๋‹ค์Œ ์ค„์ด ์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์—†์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
2. Python์—์„œ EOF ๊ฐ์ง€
sys.stdin.read() ๋˜๋Š” input()์„ ์‚ฌ์šฉํ•ด ๊ฐ์ง€ํ•จ.

๐Ÿ˜ŠEOF(Linux/Unix/MacOs -> Ctrl + D ๋˜๋Š” Windows -> Ctrl + Z)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•

1. Scanner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ EOF ์ฒ˜๋ฆฌ
Scanner ํด๋ž˜์Šค์•ˆ์— hasNext() ๋˜๋Š” hasNestLine() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("์ž…๋ ฅํ•˜์„ธ์š” (Ctrl+D๋กœ EOF):");
        
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println("์ž…๋ ฅ๋œ ๋‚ด์šฉ: " + line);
        }
        
        System.out.println("EOF์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.");
    }
}

0๊ฐœ์˜ ๋Œ“๊ธ€