Java (자바)

[Java] 자바 스캐너 (Scanner) - 콘솔창에 텍스트 입력

Oscar:) 2022. 4. 14. 16:16

이전 글에서, 자바 출력문을 이용하여 데이터를 콘솔창에 출력하는 방법을 배워보았다.

이번에는 데이터를 입력하는 방법을 알아보자.

 

자바에서 데이터를 입력하는 방법은 종류가 다양한데,

그 중 가장 대표적으로 쓰이는 방법은 Scanner 클래스를 사용하는 것이다.

 

 


먼저, 스캐너 기능을 사용하기 위해서는 java.util 패키지에서 Scanner 클래스를 import 해주어야 한다.

(import = 불러오다)

공부를 계속 하다보면, 더욱 많은 기능을 사용해 볼 것이므로 import를 사용할 일이 점차 많아질 것이다.

import 코드는 제일 상단에 작성한다.

 


이제, 스캐너를 사용하기 위해서 스캐너의 객체를 만들어줘야 한다.

Scanner sc = new Scanner(System.in);

클래스이름 객체이름 = new 클래스이름;

(System.in 은 사용자로부터 입력을 받기 위한 입력 스트림)

 

객체는 본인이 원하는대로 이름을 지어주면 된다.

(변수 선언과 비슷하다고 생각하면 된다)

 

스캐너 객체로 가장 많이 쓰이는 이름은 scanner, sc, in 등이 있다.

 


Scanner 클래스의 메서드를 호출하여 사용해보자.

위에서 생성한 sc 객체에 next() 메서드를 사용하여 콘솔창에 텍스트 입력에 성공하였다.

(시퍼런 텍스트가 입력한 텍스트이다)

 

하지만 next() 메서드만 사용해야 되는 것은 아니다.

Scanner 클래스에는 다양한 메서드가 존재하고, 상황에 맞는 메서드를 호출해야 한다.


Scanner 클래스의 메서드

// 문자열
next();     // String 타입 입력 - 공백을 기준으로 첫 단어만 입력됨
nextLine();     // String 타입 입력 - 행을 기준으로 한 줄이 입력됨

// 정수형
nextByte();     // byte 타입 입력
nextShort();     // short 타입 입력
nextInt();     // int 타입 입력
nextLong();     // long 타입 입력

// 실수형
nextFloat();     // float 타입 입력
nextDouble();     // double 타입 입력

// 논리형
nextBoolean();     // boolean 타입 입력

위 메서드를 보면, 문자열을 제외하고는 자료형 타입을 그대로 사용한 것을 확인할 수 있다.

 

아마도 nextLine(), nextInt() 을 제일 자주 사용할 것이다.

 


next() 와 nextLine() 의 차이점

next() 메서드는 공백을 기준으로 한 단어까지만 입력을 받는다.

 

콘솔창에 「자바 스캐너를 이용한 텍스트 입력하기..」 를 입력했지만

「자바」 만 입력, 출력된 것을 확인할 수 있었다.

 


nextLine() 메서드는 행을 기준으로 입력을 받는다.

 

입력한 텍스트가 모두 입력, 출력된 것을 확인할 수 있었다.

 

next() 와 nextLine() 을 혼용할 때는 신경 쓸 필요가 있겠다.

 


nextInt() 사용하기

nextInt() 는 int 타입의 정수만을 입력받을 수 있다.

 

위 예제와 같이 문자열 텍스트를 입력하면 에러가 나타나는것을 확인할 수 있다.

(InputMismatchException)

 


입력받은 값 응용하기

nextInt() 로 입력받은 정수를 이용하여 간단한 if문을 통해 선택지를 만들어 보았다.

 

위 예제처럼, 사용자에게 입력받은 데이터를 저장하여 다양한 방법으로 응용할 수 있다.