Study📚/Java

자바 - 입출력

woo!na 2023. 9. 25. 20:39

1. BufferedReader 클래스

입력값을 <문자열>로 반환.

Integer 클래스의 parseInt 메소드와 같이 정수모양으로 입력받은 문자열을 정수형으로 변환하는 것이 가능하다

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
//---------------------------- 위의 import 구문 입력 필수
// import java.io.*; 도 가능

public static void main(String[] args) throws IOException	// throws 필수

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//------------------문자 입력을 읽는 장치--
//                                     ---바이트 -> 문자 번역기--
//                                                           -바이트 입력값-

String name = br.readLine();
int a = Integer.parseInt(br.readLinr());

한 클래스 안에서 입력을 두 번 받는다고 BufferedReader 클래스의 인스턴스 생성을 두 번 할 필요는 없음

 

2. System.in.read() 메소드

입력 대기열로부터 <한 문자>만을 가져온다. 단, 입력받은 문자 그대로 가져오는 것이 아니라

<ASCII Code값(정수 형태)>로 반환한다.

import java.io.IOException;
//---------------------------- 위의 import 구문 입력 필수
// import java.io.*; 도 가능

public static void main(String[] args) throws IOException	// throws 필수

char ch;
ch = (char)System.in.read();
//         ---------------- 정수형으로 반환하기 때문에
//   ------ 명시적 형 변환

BufferedReader 와 차이점이 있는데 한 글자를 입력받은 한 문자만을 가져오는 과정에서

한 문자 뒤에 있는(입력 대기열에 남아있는) \r 과 \n 을 스킵(건너뛰기) 해 주어야 다음 문자를 읽을 수 있다.

System.in.skip(2);
// 매개변수에(2)에 의해 두 글자를 읽어내지 않고 건너뛴다(버린다).
// ==> \r 과 \n 스킵

 

3. Scanner 클래스

입력을 토큰에 따라 분할하는 클래스. 디폴트(Default)로 사용되는 단락문자(토큰)는 공백이며 그 외의 문자로 설정 가능

import java.util.Scanner;
public static void main(String[] args) //throws IOException; 내장되어 있음. 생략가능
{
	Scanner sc = new Scanner(System.in);
    int a = sc.nextInt();
    String b = sc.next();	// 버퍼드의 readLine();
    
    // 단락문자(토큰) 변경 useDelimiter();
    sc = new Scanner(sc.next()).useDelimiter("\\s*,\\s*");
    //    입력받은 데이터---------  ------------구분자 사용 메소드영역
    //                          역슬래쉬 두 개는 곧 한개 사용을 의미하기 때문에 \s*,\s*
}