본문으로 바로가기

[JAVA] Scanner클래스로 콘솔 입력하기

category Note/JAVA 2018. 11. 7. 15:17


초기 자바에서는 콘솔입력하는 것이 자바에 익숙치 않은 개발자에게는

다소 부담스러운 방법 이었다고 한다.


그도 그럴것이 숫자 하나를 받기위해 아래의 코드들이 필요했으며

이는 자바 입출력, Wrapper클래스, Exception에 대해 알고 있어야 했다.


1
2
3
BufferedReader br = new BufferedReader(new InputStreamReader(Sysetem.in));
String str = br.readLine();
int num = Integer.parseInt(str);
cs


하지만 자바 5.0부터는 대안으로 Scanner를 이용하여 입력 받을 수 있도록 변경되었으며,

위의 소스를 아래와 같이 간단히 변경 가능해졌다.


1
2
Scanner no = new Scanner(System.in);
int num = no.nextInt();
cs


물론 int형 말고 String, Boolean, byte, double 등 여러 형태로 받을 수 있다.

간단한 예제를 한번 만들어 보자면, 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
 
class ScannerEx{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        
        System.out.print("어제 먹은 음식은 무엇인가요?");
        String text = input.nextLine();
        System.out.println("맛있는 " + text + ", 부럽습니다");
        
        System.out.print("직업은 직장인인가요? (true/false)");
        boolean studentFlag = input.nextBoolean();
        if(studentFlag==true){
            System.out.println("저런... 안타깝습니다.");
        }else{
            System.out.println("다행입니다.");
        }
        
        System.out.println("지금은 몇시고, 퇴근시간은 몇시인가요? ");
        System.out.print("지금시간(00~24) : ");
        int now = input.nextInt();
        System.out.print("퇴근시간(00~24) : ");
        int fin = input.nextInt();
        int result = fin - now;
        
        if(result > 0){
            System.out.println(result+"시간 남았네요, 조금만 힘내요.");
        }else{
            System.out.println("뭔가 이상한거 같은데... 집안가나요..");
        }
    }
}
cs


7~9 : String형태로 콘솔 입력 후 출력.

11~17 : Boolean형태로 콘솔 입력 후 출력.

19~30 : int형태로 콘솔 입력 후 차이 구한 뒤 출력.



실행결과는 다음과 같다.



Scanner클래스는 java.util 패키지에 제공되는 클래스로 아래와 같이 많은 생성자를 제공하는데.

즉 키보드로 입력되는 것 이외에도 여러 데이터를 추출할 수 있음을 뜻한다.