스프링을 공부하기 시작하면서 콘솔로 입출력을 받지 않게 되었다.
하지만 알고리즘을 풀다보면 종종 입출력을 사용해야 되는데, System.out.println()
은 하도 많이 써서 기억하고 있었으나,,, Scanner는 홀라당 까먹어 버렸다는 오늘의 이야기...
다시 상기시키기 위해 Notion 정리 내용을 다시 확인하며 정리해보았다..
다들 화이팅이다,,, 망각의 동물,,, 인간,,,
Scanner 클래스는 유저의 입력값을 받을 때 사용하는 객체.
java.util 패키지에 속해 있기 때문에 import java.util.Scanner
로 import 한 후 사용할 수 있다.
[System.in](http://System.in)
클래스를 인자로 넣어주어야 한다.Scanner scanner = new Scanner(System.***in***);
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
// Scanner 타입을 이용한 입력 받기
Scanner scanner = new Scanner(System.in);
System.out.print("정수 입력 >>>>> ");
int num1 = scanner.nextInt();
System.out.println("num1 = " + num1);
System.out.print("정수 입력 >>>>> ");
int num2 = scanner.nextInt();
System.out.println("num2 = " + num2);
}
}
출력 결과는 다음과 같다.
정수 입력 >>>>> 1
num1 = 1
정수 입력 >>>>> 1
num2 = 1
스캐너는 사용자가 입력을 다 끝마치고 엔터를 칠 때까지 기다린다.
입력 시에 입력 버퍼(메모리)에 임시로 저장한다.
엔터가 눌리면 버퍼에서 데이터를 꺼내 프로그램에 저장하고, 자신의 버퍼는 삭제한다.
정수 입력 >>>>> 1 3
num1 = 1
정수 입력 >>>>> num2 = 3
nextInt()
: 입력 버퍼 (임시메모리)에서 토큰 (공백, 탭, 엔터)으로 구분된 입력 값을 읽어서 정수(INT)를 반환nextDouble()
: 입력 버퍼 (임시메모리)에서 토큰 (공백, 탭, 엔터)으로 구분된 입력 값을 읽어서 실수(double)를 반환next()
: 입력 버퍼 (임시메모리)에서 토큰 (공백, 탭, 엔터)으로 구분된 입력 값을 읽어서 문자열(String)를 반환nextInt()
, nextDouble()
, next()
: 값을 읽은 후에도 입력 버퍼에 남아있는 내용들이 있을 수 있음nextLine()
: 입력 버퍼에서 엔터를 만날 때까지 모든 값을 읽어서 문자열을 리턴nextLine()
호출 이후 입력 버퍼의 모든 내용이 지워짐
입력 버퍼에 남아있는 모든 내용을 읽고 지움!
만약 한 줄을 입력받고 싶으면 nextLine()으로 문자열 받기 전에 nextLine() 한 번 더 써주면 이전에 남아있던 버퍼들을 삭제할 수 있으니, 혹시 고민이 된다면 nextLine()
을 호출해줍시다!
scanner.nextLine();
// 버퍼에 남아있는 모든 내용 읽고 지움 (토큰까지 싹)
System.out.println("문자열 입력 >>>>>> ");
String msgString = scanner.nextLine();
System.out.println(msgString);