본문 바로가기
Language/Java

[Java] 화면에서 입력받기 - Scanner

by DevPark 2023. 1. 24.

화면에서 입력받기 - Scanner

화면으로 통해서 값을 입력받는 Scanner에 대해서 알아본다. 

 

▶Scanner란?

Scanner 클래스는 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스이다.

클래스는 어떤 기능을 제공하는 것이다.

 

▶Scanner 클래스의 사용

① import문 추가

     import java.util.*; 

Scanner 클래스를 사용하려면 먼저 import문을 추가해야한다. import문은 사용하려는 클래스가 어디에 속해있는지 어떤 패키지에 속해있는지 알려주기 위한 것이다. import문이 필요한 클래스가있고 필요하지 않은 클래스가 있다. 스캐너 클래스를 사용하기 전에 import java.util.*;을 추가해주어야 한다. 

 

② Scanner 객체의 생성

     Scanner scanner = new Scanner(System.in);

다음으로 Scanner 클래스의 객체를 생성해주어야 한다. 클래스도 객체를 생성해야만 사용할 수 있는게 있고 생성하지 않아도 되는게 있는데 println, printf 같은 메서드들은 객체를 생성하지 않고도 사용이 가능하다. 반면에 Scanner 클래스는 꼭 객체를 생성해야한다. 생성문은 Scanner scanner = new Scanner(System.in);이다. System.in은 화면 입력을 의미하고 Scanner 클래스는 화면뿐만 아니라 파일로 부터도 입력을 받을 수 있다.

 

③ Scanner 객체를 사용

     int num = scanner.nextInt();  // 화면에서 입력받은 정수를 num에 저장

생성한 Scanner 객체를 사용하면 화면으로부터 값을 입력 받을 수 있다. int num = scanner.nextInt(); 문장은 화면에서 입력받은 정수를 변수 num에 저장하는 것이다. 정수가 아니라 실수를 입력받을때는 어떻게 해야할까? 실수를 입력받을 때는 nextInt()가 아닌 nextFloat()로 써주면 된다. 

 

   String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장

nextLine()에서는 화면에서 입력한 내용을 줄 단위. 즉, 한 행을 읽어서  문자열로 변환한다. 그래서 저장할 변수의 타입이 String이다.

 

   int num = Integer.parseInt(input);  // 문자열(input)을 숫자(num)로 변환

위 문장은 문자열을 숫자로 변환하는 문장이다. input이라는 문자열을 숫자로 즉, 정수로 변환해서 변수 num에 저장한다. 

숫자를 문자열로 변환할때는 숫자에 " "을 더해주면 된다(숫자+" "). 반대로 문자열을 숫자로 바꿀때는 Integer.parseInt() 메서드를 사용하면 된다.   

 

화면에서 라인단위로 입력받는 방법과 문자열을 숫자로 변환하기 위한 방법을 설명하기 위해 위 두문장(String input = scanner.nextLine(); , int num = Integer.parseInt(input);)을 썼지만 사실 int num = scanner.nextInt(); 이 한줄로 간단하게 써도 된다. 다른방법을 설명하기 위해 두 문장을 썼다. 한 라인에 여러가지 값을 입력받는 경우 nextLine()으로 라인 전체를 읽어온 다음에 값을 나누어 처리해야할때가 있다. 그럴 때 위 두 문장을 잘 응용하면 된다. 단순히 숫자 하나하나를 입력받을 때는 첫번째 문장을 사용하면 된다. 

Scanner 예제1
Scanner 예제1
Scanner 예제2
Scanner 예제2


참고자료:

https://youtu.be/LNWQ_XdYcUY

반응형

'Language > Java' 카테고리의 다른 글

[Java] 타입간의 변환방법  (0) 2023.01.29
[Java] 정수형의 오버플로우  (0) 2023.01.25
[Java] printf를 이용한 출력  (0) 2023.01.24
[Java] 변수 기본형의 종류와 범위  (0) 2023.01.19
[Java] 기본형과 참조형  (0) 2023.01.17

댓글