[Java Basic] Scanner

심채원·2023년 11월 30일
0

Java

목록 보기
2/3

Scanner

업로드중..

스프링을 공부하기 시작하면서 콘솔로 입출력을 받지 않게 되었다.
하지만 알고리즘을 풀다보면 종종 입출력을 사용해야 되는데, System.out.println()은 하도 많이 써서 기억하고 있었으나,,, Scanner는 홀라당 까먹어 버렸다는 오늘의 이야기...

다시 상기시키기 위해 Notion 정리 내용을 다시 확인하며 정리해보았다..

다들 화이팅이다,,, 망각의 동물,,, 인간,,,


Scanner 클래스는 유저의 입력값을 받을 때 사용하는 객체.

java.util 패키지에 속해 있기 때문에 import java.util.Scanner 로 import 한 후 사용할 수 있다.

  • Scanner 타입을 이용한 입력 받기
    • Scanner는 인스턴스를 생성하여 사용할 수 있다.
    • 생성자를 호출할 때 입력을 담당하는 [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);
		
	}
}
  • 위 코드를 실행했을 때, 수를 입력하고 Enter를 누르면 2번 입력이 실행된다.
    • 출력 결과는 다음과 같다.

      정수 입력 >>>>> 1
      num1 = 1
      정수 입력 >>>>> 1
      num2 = 1
    • 스캐너는 사용자가 입력을 다 끝마치고 엔터를 칠 때까지 기다린다.

    • 입력 시에 입력 버퍼(메모리)에 임시로 저장한다.

    • 엔터가 눌리면 버퍼에서 데이터를 꺼내 프로그램에 저장하고, 자신의 버퍼는 삭제한다.

  • 만약 첫 번째 입력 시 공백 (또는 탭) 으로 구분된 값들을 제공할 경우 다음과 같이 출력된다.
    정수 입력 >>>>> 1 3
    num1 = 1
    정수 입력 >>>>> num2 = 3
    • 1과 3은 스캐너의 입력 버퍼에 저장되고, 스캐너는 1과 공백으로 구분된 3을 다음의 입력값으로 인식해 두번째 입력값의 결과로 출력한다.

Scanner는 공백과 탭, 엔터를 인식하여 값을 구분한다.

  • 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);
profile
인생의 디테일을 추가하는 심채원

0개의 댓글