BufferedReader, StringTokenizer, Scanner

BufferedReader์™€ Scanner์˜ ์ฐจ์ด์  ๋ฐ ์‚ฌ์šฉ๋ฒ•

๊ฐœ์š”

์ž๋ฐ”์—์„œ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ BufferedReader์™€ Scanner ํด๋ž˜์Šค๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” BufferedReader๋ฅผ ์ค‘์‹ฌ์œผ๋กœ Scanner์™€์˜ ์ฐจ์ด์  ๋ฐ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ณธ๋ก 

BufferedReader ์‚ฌ์šฉ๋ฒ•

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

๋ถ„์„

  1. System.in:
    • ์ฝ˜์†”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ InputStream ํƒ€์ž…์˜ ํ•„๋“œ์ž…๋‹ˆ๋‹ค. System ํด๋ž˜์Šค์˜ in ์ •์  ํ•„๋“œ๋กœ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • System.in์œผ๋กœ ๋ฐ›์€ InputStream ๊ฐ์ฒด๋Š” read ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 1๋ฐ”์ดํŠธ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์–ด, ํ•œ๊ธ€๊ณผ ๊ฐ™์€ 2๋ฐ”์ดํŠธ ๋ฌธ์ž๋Š” ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  2. InputStreamReader:
    • InputStream ๊ฐ์ฒด๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ new InputStreamReader(System.in)์€ ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ, ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ผ์ผ์ด ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  3. BufferedReader:
    • InputStreamReader๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. BufferedReader๋Š” ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋˜๊ธฐ ์ „๊นŒ์ง€์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ , ์ŠคํŠธ๋ฆผ์ด ๋‹ค ์ฐจ๊ฑฐ๋‚˜ null์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ ๊ฐ’์„ ๊ณ„์† ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๊ฒฝ์šฐ Scanner๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ์ ์œผ๋กœ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

ํ™œ์šฉ ์˜ˆ์ œ

String ์ž…๋ ฅ

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine(); // ํ•œ ์ค„์„ ์ฝ์–ด String ํƒ€์ž…์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

String ๋ฐฐ์—ด ์ž…๋ ฅ

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] strArrN = reader.readLine().split(" "); // ํ•œ ์ค„์„ ์ฝ์–ด " "์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ  String ๋ฐฐ์—ด๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

int ์ž…๋ ฅ

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int i = Integer.parseInt(reader.readLine()); // ํ•œ ์ค„์„ ์ฝ์–ด ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ int๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

int ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ์ •๋ ฌ

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] strArrN = reader.readLine().split(" ");
int[] arrAList = new int[strArrN.length];
for(int i = 0; i < strArrN.length; i++) {
    arrAList[i] = Integer.parseInt(strArrN[i]);
}
Arrays.sort(arrAList); // ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

Scanner ํด๋ž˜์Šค

Scanner๋ž€?

Scanner ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด ๋“ฑ์„ ๋ถ„์„ํ•˜์—ฌ ์ž…๋ ฅ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Scanner ์‚ฌ์šฉ๋ฒ•

Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); // ์ž…๋ ฅ๋ฐ›์€ intํ˜• ์ˆซ์ž๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ
String b = sc.next(); // ์ž…๋ ฅ๋ฐ›์€ Stringํ˜• ๋ฌธ์ž์—ด์„ ๋ณ€์ˆ˜์— ์ €์žฅ
long c = sc.nextLong(); // ์ž…๋ ฅ๋ฐ›์€ longํ˜• ์ˆซ์ž๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ

BufferedReader์™€ Scanner์˜ ์ฐจ์ด์ 

  • ์†๋„:
    • Scanner๋Š” ์ž…๋ ฅ ์ฆ‰์‹œ ํ”„๋กœ๊ทธ๋žจ์— ์ „์†ก๋˜๊ณ , BufferedReader๋Š” ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ์„ ๋ฐ›์•„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ BufferedReader๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.

StringTokenizer ํด๋ž˜์Šค

StringTokenizer๋ž€?

StringTokenizer ํด๋ž˜์Šค๋Š” ์ง€์ •๋œ ๊ตฌ๋ถ„์ž๋กœ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํ† ํฐ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

StringTokenizer ์‚ฌ์šฉ๋ฒ•

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); // ํ•œ ์ค„์„ ์ฝ์–ด ๊ตฌ๋ถ„์ž๋กœ ๋ถ„๋ฆฌํ•  ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
String b = st.nextToken(); // ์ฒซ ๋ฒˆ์งธ ํ† ํฐ์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

์ •๋ฆฌ

  • InputStream(= System.in):
    • ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜: read()
    • ๋‹จ์œ„: byte
    • ๋‹จ์ : ํ•œ๊ธ€์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.
  • InputStreamReader:
    • ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜: read()
    • ๋‹จ์œ„: char
    • ๋‹จ์ : ๋ฐฐ์—ด ํฌ๊ธฐ ์ง€์ •์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.
  • BufferedReader:
    • ์ฝ์–ด์˜ค๋Š” ํ•จ์ˆ˜: readLine()
    • ๋‹จ์œ„: String
    • ๋‹จ์ : ์•ž์„  ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ๋‹ด์•„์•ผ ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • Scanner:
    • ์žฅ์ : ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์›, ์‚ฌ์šฉ ํŽธ๋ฆฌ์„ฑ
    • ๋‹จ์ : ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” BufferedReader์™€ StringTokenizer๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Š” Scanner๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. BufferedReader์™€ ํ•จ๊ป˜ StringTokenizer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Leave a comment