이번 편의 목표: Scanner로 제목과 연체 일수를 읽어 연체료를 출력합니다.

프로그램이 사람 입력을 받으려면 표준 입력을 읽어야 합니다. 자바에서는 java.util.Scanner를 사용합니다.

한 줄과 숫자

Java
import java.util.Scanner;

public class LateFeeInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("책 제목: ");
        String title = scanner.nextLine();
        System.out.print("연체 일수: ");
        String daysText = scanner.nextLine();
        int days = Integer.parseInt(daysText.trim());
        int fee = days * 100;
        System.out.println(title + " 연체료는 " + fee + "원입니다.");
        scanner.close();
    }
}

import는 다른 패키지의 클래스를 가져옵니다. Scanner는 java.util 패키지에 있습니다. nextLine은 엔터까지의 한 줄을 문자열로 읽습니다. Integer.parseInt는 그 문자열을 int로 바꿉니다. trim은 앞뒤 공백을 제거합니다.

print는 줄을 바꾸지 않고, println은 출력 후 줄을 바꿉니다. 제목이 개미이고 일수가 3이면 다음 문장이 출력됩니다.

개미 연체료는 300원입니다.

숫자가 아닌 글을 입력하면 NumberFormatException이 발생하며 프로그램이 멈춥니다. 예외를 붙잡아 다시 묻는 코드는 이번 연재의 범위를 넘습니다. 연습에서는 0 이상의 정수만 입력한다고 정합니다.

nextInt 뒤에 남는 줄바꿈

nextInt로 숫자를 읽으면 엔터에 해당하는 줄바꿈이 입력에 남을 수 있습니다. 바로 다음 nextLine이 빈 문자열을 읽는 문제가 생깁니다. 그래서 이 연재는 한 줄을 읽은 뒤 parseInt로 변환합니다. 입력 방식이 하나로 유지됩니다.

직접 해 보기

회원 이름과 대출 권수를 한 줄씩 입력받아 이름 님, 대출 권수는 2권입니다. 형식으로 출력하세요.

해설

Java
import java.util.Scanner;

public class LoanInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("이름: ");
        String name = scanner.nextLine();
        System.out.print("대출 권수: ");
        int count = Integer.parseInt(scanner.nextLine().trim());
        System.out.println(name + " 님, 대출 권수는 " + count + "권입니다.");
        scanner.close();
    }
}