4.11 키보드 입력

지금까지는 우리가 코드에 정해놓은 값만 출력했습니다. 이제 막 실행된 프로그램이 사용자와 대화(입력)하는 방법을 알아봅니다. ⌨️


1. 스캐너 (Scanner) 📡

1) 개념

자바 프로그램은 기본적으로 듣는 기능이 없습니다. 키보드로 입력된 내용을 읽어들이기 위해서는 Scanner라는 도구(클래스)를 사용해야 합니다.

2) 비유: “마이크와 통역사”

  • 키보드: 사용자의 목소리 (데이터 발신)
  • System.in: 마이크 (들어오는 통로)
  • Scanner: 통역사 (들어온 소리를 문자나 숫자로 변환해서 프로그램에 전달)

3) 입력 흐름 시각화

graph LR
    User[사용자] -->|타이핑| Keyboard[키보드]
    Keyboard -->|System.in| Scanner[Scanner]
    Scanner -->|nextLine| Program[자바 프로그램]
    
    style User fill:#f9f,stroke:#333
    style Keyboard fill:#eee,stroke:#333
    style Scanner fill:#ff9,stroke:#333
    style Program fill:#bfb,stroke:#333

2. 사용법 3단계 🛠️

스캐너를 사용하려면 딱 3단계만 기억하면 됩니다.

1단계: 도구 꺼내기 (Import)

자바에게 “나 스캐너 쓸 거야!”라고 알려줍니다. (맨 윗줄에 작성)

import java.util.Scanner;

2단계: 스캐너 켜기 (객체 생성)

System.in(입력 장치)에 빨대를 꽂아서 스캐너를 만듭니다.

Scanner scanner = new Scanner(System.in);

3단계: 입력 받기 (메소드 호출)

변수에 입력받은 값을 저장합니다.

String input = scanner.nextLine(); // 엔터 칠 때까지 기다림

3. 실전 예제: 나이 계산기 🧮

사용자에게 태어난 연도를 입력받아 나이를 계산하는 프로그램입니다.

import java.util.Scanner;

public class AgeCalculator {
    public static void main(String[] args) {
        // 1. 스캐너 생성
        Scanner scanner = new Scanner(System.in);

        // 2. 안내 메시지 출력
        System.out.print("태어난 연도를 입력하세요: ");

        // 3. 문자열로 입력 받기
        String str = scanner.nextLine(); 

        // 4. 숫자로 변환 (Parsing)
        int birthYear = Integer.parseInt(str);
        int age = 2024 - birthYear;

        // 5. 결과 출력
        System.out.println("당신의 나이는 " + age + "세 입니다.");
    }
}

4. 자주 하는 실수: nextInt() 사용 시 주의 ⚠️

숫자를 입력받을 때 scanner.nextInt()를 사용하면 편해 보이지만, 줄바꿈 문자(Enter)가 찌꺼기처럼 남아서 다음 입력을 방해할 수 있습니다.

추천 방법: 무조건 nextLine()으로 문자열을 모두 읽어들인 후, 필요하면 Integer.parseInt()로 변환하는 것이 정신 건강에 좋습니다. 👍

서브목차