티스토리 뷰

JAVA

[Java] Scanner를 이용한 키 입력

단미라이프 2022. 3. 8. 15:50
반응형

 

1. 자바에서 키 입력

 

System.in
  • System.in 은 키보드 장치를 직접 제어하고 키 입력을 받는 표준 입력 스트림 객체이다.
  • 입력된 키를 바이트 정보로 제공하기 때문에 응용프로그램은 이 정보를 다시 문자나 숫자로 변환해야 한다.

 

Scanner 객체 생성

 

Scanner scan = new Scanner(System.in);
  • 응용프로그램이 키 입력을 쉽게 받을 수 있도록 자바에서 제공하는 클래스이다.
  • Scanner객체는 System.in 객체를 이용하여 키보드로 바이트 정보를 입력받고,
    자바 응용프로그램이 원하는 타입으로 변환하여 리턴한다.

 

 

 

 

import 

 

  • 스캐너 객체를 생성하면 빨간 줄로 오류가 표시된다.
  • 자바에서 제공하는 Scanner 클래스를 사용하기 위해서는 Import를 해야한다.
  •  ctrl + shift + o(영어)  (import 단축키)
    또는 빨간줄(오류표시)에 마우스를 대면 오류 메시지 확인 가능 (import 'Scanner'(java.util) 클릭)
import java.util.Scanner;

 

 

 

Scanner 클래스의 주요 메소드
메소드 설명
String next() 다음 토큰을 문자열로 리턴
byte nextByte() 다음 토큰을 byte 타입으로 리턴
short nextShort() 다음 토큰을 short 타입으로 리턴
int nextInt() 다음 토큰을 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 리턴

 

 


 

 

2. next() 와 nextLine()

  • next() 는 공백이 낀 문자열을 읽을 수 없다.
  • nextLine()은 <Enter>키의 입력을 기다리며 <Enter>키 입력 시 빈 문자열("")을 리턴한다.

 

next()

 

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		// next()
		Scanner scan = new Scanner(System.in);
		
		String str = scan.next();
		System.out.println(str);
	
	}

}

  • 한 줄에 Hello World!를 입력 했는데 str에는 Hello만 담겨 있음을 확인

 

nextLine()

 

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		// nextLine()
		Scanner scan = new Scanner(System.in);
		
		String str = scan.nextLine();
		System.out.println(str);
	
	}

}
  • nextLine()은 공백 유무와 상관없이 읽음

 

 

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		// nextLine()
		Scanner scan = new Scanner(System.in);
		
		String str = scan.nextLine();
		String str2 = scan.nextLine();
		String str3 = scan.nextLine();
		System.out.println(str);
		System.out.println(str2);
		System.out.println(str3);
	
	}

}
  • nextLine()은 줄바꿈 시  ""(빈문자)로 리턴

 

 


 

 

3. Scanner 객체 닫기

scan.close();
  • Scanner 객체가 닫히면 System.in도 함께 닫혀서 키 입력을 받을 수 없음
  • Scanner 객체를 여러개 생성해도 System.in을 공유하므로 한 군데서 Scanner.close()를 호출하여 객체를 닫아버리면 System.in도 닫혀서 다른 Scanner객체에서도 키 입력을 받을 수 없게 된다.
  • 응용프로그램에서 Scanner를 닫는 코드가 없으면 컴파일 시 warning(노란 표시) 경고가 발생하지만 실행에는 문제 없다.

 

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		String str = scan.nextLine();
		System.out.println("입력받은 수 >> " + str);
		
		scan.close();
        
		Scanner scanner = new Scanner(System.in);
		String str2 = scanner.nextLine();
		System.out.println("입력받은 수 >> " + str2);
	}

}

 

 

 


 

 

 

 

4. 예제 연습

숫자를 입력 받아 제곱 계산기를 만들어보자

 

import java.util.Scanner;

public class Ex01 {

	public static void main(String[] args) {
		// 1. 입력하기를 통해
		// 2. 제곱계산기 만들어보자
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("=======제곱 계산기=======");
		System.out.println("숫자를 입력해주세요 >>");
		
		int num = scan.nextInt();
		System.out.println(num + " * " + num + " = " + num*num);

	}

}

 

 

 

두 숫자를 입력받아 두 수의 합을 출력해보세요

 

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		// 두 숫자를 입력받아 두 수의 합을 출력
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("첫번째 숫자를 입력해주세요 >> ");
		int num1 = scan.nextInt();
		
		System.out.println("두번째 숫자를 입력해주세요 >> ");
		int num2 = scan.nextInt();
		
		System.out.println("결과 : " + (num1 + num2));

	}

}

반응형
댓글
반응형
공지사항