본문 바로가기
JAVA

JAVA Scanner(스캐너) 클래스

by 자바비터 2022. 2. 5.

 System.in

 

  • 키보드로부터 직접 읽는 자바의 표준 입력 스트림
  • 키 값을 바이트(문자 아님)로 리턴

***System.in을 사용할 때 문제점?

- 키 값을 바이트 데이터로 넘겨주므로 응용 프로그램이 문자 정보를 변환해야 한다.

 

Scanner 클래스 

 

  • System.in에게 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴
  • Scanner는 개발자가 원하는 다양한 타입의 값으로 바꾸어 읽을 수 있음

 

***java.util.Scanner 클래스 객체 생성

 

import java.util.Scanner; //import문 필요
...
Scanner a = new Scanner(System.in);  //Scaner객체 생성

 

   

Scanner 클래스 메소드
메소드 설명
String next() 다음 토큰을 문자열로 리턴
byte nextByte() 다음 토큰을 byte 타입으로 리턴
short nextShort() 다음 토큰을 short 타입으로 리턴
int nextInt(0 다음 토큰을 int 타입으로 리턴
long nextLong() 다음 토큰을 long 타입으로 리턴
float nextFloat() 다음 토큰을 float 타입으로 리턴
double nextDouble() 다음 토큰을 double 타입으로 리턴
boolean nextBoolean() 다음 토큰을 Boolean 타입으로 리턴
String nextLine() '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열을 리턴
void close() Scanner의 사용 종료
boolean hasNext() 현재 입력된 토큰이 있으면 true. 아니면 입력때까지 무한정 대기, 새로운 입력이 들어올 때 true 리턴, ctrl-z키가 입력되면 입력 끝으로 false 리턴

 

   

Scanner 클래스 예제(1) - 초단위 계산하기

      

package testt;

import java.util.Scanner;

public class blogTest {
public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	//Scanner 클래스 변수 선언 및 초기화. 입력값을 받아오는 스캐너기능을 사용할 수 있다

	System.out.print("정수를 입력하세요 : ");
	//Scanner.nextInt(); -> Scanner클래스를 직접 호출X, Scanner 역할을 하는 sc 변수를 이용해야 함
	int time = sc.nextInt();  
	//Scanner기능 변수 값을 입력받아 정수형 변수 time에 대입. 정수형이기 때문에 nextInt() 사용
	int second = time % 60;  
	//% =나머지연산자 -> 입력받아 대입된 time 값을 60으로 나눈 나머지 값을 second에 대입
	int minute = (time / 60) % 60;  
	//입력받아 대입된 time 값으로 분단위 계산 수식을 하여 minute값에 대입
	int hour = (time / 60) / 60;  
	//입력받아 대입된 time 값으로 시간단위 계산 수식을 하여 hour값에 대입
       
	System.out.print(time + "초는 ");
	System.out.print(hour + "시간 ");
	System.out.print(minute + "분 ");
	System.out.print(second + "초입니다.");  //내용 출력
	
	//Sanner.close();  //Scanner 역할을 하는 sc를 사용했으니 sc로 닫아야함
	sc.close();  //Scanner 사용 후 닫아주는게 원칙
	}
}

      

실행 결과 화면

  

   

Scanner 클래스 예제(2) - 합격 불합격 계산하기

      

package testt;

import java.util.Scanner;

public class blogTest {
public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	//Scanner 클래스 변수 선언 및 초기화. 입력값을 받는 scanner 생성

	System.out.print("점수를 입력하시오 : ");
	int score = scanner.nextInt();
	//정수형 변수 score 생성. 정수값을 입력받는 scanner 변수 입력값 대입

	if(score >= 80) {  //score가 80보다 크거나 같으면 if 실행문 실행.
		System.out.println("축하합니다! 합격입니다.");
	}
	else {  //score가 80보다 크거나 같지 않으면 else문 실행.
		System.out.println("불합격입니다. 다음기회에 다시 지원바랍니다.");
	}

	scanner.close();  //스캐너 사용 후 닫아주기
	}
}

     

실행 결과 화면

 

 

 

댓글