[java] Scanner 클래스

sesame·2021년 8월 4일
0

Java

목록 보기
7/25

Scanner Class는 사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스이다.

import java.util.Scanner;

Scanner sc= new Scanner(System.in);

정수: sc.nextInt();
실수: sc.nextFloat(); 또는 sc.nextDouble();
문자열: sc.next(); 또는 sc.nextLine();

위와 같이 원하는 자료형의 함수를 사용하여 원하는 값을 입력받을 수 있다.

> Scanner 클래스로 문자열 입력받기

문자열을 받아오는 데는 next()와 nextLine()이 있다.

next()는 띄어쓰기를 입력할 수 없고, 띄어쓰기를 구분 인자로 생각하여 각각 저장하고 줄 구분까지 저장하지 않는다.
nextLine()은 문자열에 띄어쓰기 가능하고, 줄 구분까지 저장한다.

⏳문제점

nextLine()을 사용할 때

int num = sc.nextInt();
String s = sc.nextLine();

이 순서로 사용하면 첫 번째 정수만 입력받고 다음에 실행되는 nextLine() 부분을 건너뛰게 되는 에러가 발생할 수 있다. 정수를 입력받을 때 발생하는 개행문자(\n)가 처리되지 않고 buffer에 남기 때문이다.

✨해결방법

  1. 두 코드 사이에 sc.nextLine()으로 개행문자를 처리
int num = sc.nextInt();
sc.nextLine();
String s = sc.nextLine();
  1. 두 코드 사이에 sc.skip("[\r\n]+");로 개행문자를 skip 하는 방법이 있다.
int num = sc.nextInt();
sc.skip("[\\r\\n]+");
String s = sc.nextLine();

> Scanner 클래스로 문자 입력받기

자바 Scanner은 문자열을 입력받는 것은 가능하지만, 문자를 입력받는 기능이 없다.

String str = sc.next()로 문자열을 입력받은 다음
str.charAt(0)으로 첫번째 문자만 저장하여 문자형으로 사용할 수 있다!

//1번 방법
String str = sc.next();
char c = str.charAt(0);

//2번 방법
char c = sc.next().charAt(0);

0개의 댓글

관련 채용 정보