스프링을 공부하기 시작하면서 콘솔로 입출력을 받지 않게 되었다.
하지만 알고리즘을 풀다보면 종종 입출력을 사용해야 되는데, 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 = 3nextInt() : 입력 버퍼 (임시메모리)에서 토큰 (공백, 탭, 엔터)으로 구분된 입력 값을 읽어서 정수(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);