Scanner 클래스는 자바에서 다양한 입력을 처리해주는 클래스이다.
우리가 사용자로부터 키보드 입력을 받기위해서는 이 Scanner 클래스의 객체를 만들어서
그 객체의 메소드를 실행하여 입력을 받아야한다.
단, Scanner는 자바에서 기본은 포함해주는 클래스가 아닌 추가적인 클래스이므로
" import(수입) " 해와야 한다.
package day0304;
import java.util.Scanner;
public class Ex02Scanner {
public static void main(String[] args) {
// Scanner 객체를 선언과 초기화 해보자
// 단 초기화 시에는 반드시 어디서 입력을 읽어올지를 지정해와야하기 때문에
// 키보드 입력을 할때에는 ()안에 System.in이라고 적어주어야한다.
Scanner scanner = new Scanner(System.in);
// 1. 사용자로부터 int를 입력받을 때에는
// 스캐너 객체의 nextInt()메소드를 실행하면 된다.
System.out.print("숫자: ");
int userNumber = scanner.nextInt();
System.out.println("사용자가 입력한 숫자: " + userNumber);
// 2. 사용자로부터 double을 입력받을 때에는
// 스캐너 객체의 nextDouble() 메소드를 실행하면된다.
System.out.print("실수: ");
double userDouble = scanner.nextDouble();
System.out.println("사용자가 입력한 실수: " + userDouble);
// 3.사용자로부터 스트링을 입력받을때에는
// 스캐너 객체의 nextLine() 메소드를 실행하면된다.
System.out.print("이름: ");
// 스캐너 객체를 키브드 입력을 위해 사용할때는 한가지 주의 할 점이 있는데
// 만약 nextInt(), nextDouble()등의 숫자 , 실수를 입력하는 메소드를 실행하고 나서
// nextLine() 메소드를 실행하게 된다면
// nextInt(), nextDouble()에서 사용자가 입력을 종료하기 위해 눌렀던 엔터키(공백문자\n)이
// 버퍼메모리에 남아잇고
// 그 엔터키를 보고 nextLine()메소드는 "사용자가 아무런 글자 입력을 하지 않고 입력을 끝냈다" 고 착각하는
// 버그가 존재한다
// 해당버그를 해결하기 위해서는
// nextInt(), nextDouble() 등의 숫자, 실수를 입력하는 메소드 "이후에는" 반드시
// nextLine() 메소드를 한번 실행해서 버퍼메모리를 비워주고
// 그 다음에 String 입력을 nextLine()으로 받아주어야한다.
// 단, 프로그램을 시작하자마나 스트링 입력을 위해
// nextLine()를 쓰는 경우.
// 버퍼메모리가 깨끗한 상태이기때문에
// nextLine()을 두번 적어줄 필요가 없다.
scanner.nextLine(); // 중요함-> 버퍼메모리를 비워주는 용도 (남은 엔터를 가지고 가게 함)
String name = new String(scanner.nextLine());
System.out.println("사용자의 이름: " + name);
// Scanner와 같이ㅣ 외부에거 무언가 값을 "읽어" 오는 클래스 객체는 프로그램의 가장 마지막 중에
// close() 메소드를 호출해주는 것이 좋다
scanner.close();
}
}
'JAVA > 국비 공부' 카테고리의 다른 글
if (예제) (0) | 2021.03.04 |
---|---|
Control Static(제어문) (0) | 2021.03.04 |
출력 - printf (0) | 2021.03.04 |
eclipse 환경설정 (0) | 2021.03.03 |
비교연산자 (주의사항) (0) | 2021.03.03 |