// 키보드 입력을 받는 프로그램
// 자바에서 입력을 받아올 때에는
// 우리가 프로그램을 따로 만들어서 걔한테 시키는게 아니라
// 자바가 기본적으로 만든 프로그램 즉, 클래스의 변수를 만들어서
// 걔한테 시킨다.
// 하지만 그 프로그램은 자바의 라이브러리, (자바가 미리 만들어 놓은 프로그램의 집합)에 있기 때문에
// 우리가 갖고오라고 시켜야 한다.
// 이러한 외부프로그램을 갖고 올 때에는 improt 위치.프로그램이름 으로 갖고와야 한다.
import java.util.Scanner;
public class Ex07Scanner {
public static void main(String[] args) {
//스캐너 클래서 변수(=객체)를 만들어보자
Scanner scanner = new Scanner(System.in);
//정수값을 입력 받을 떄에는 scanner의 nextInt() 메소드를 실행해주면 된다.
System.out.print("숫자를 입력해주세요: ");
int number= scanner.nextInt();
System.out.println(++number);
//정수를 받을 때 nextInt였으니깐, 실수를 받을 땐?
//nextDouble()
System.out.print("실수를 입력해주세요: ");
double myDouble = scanner.nextDouble();
System.out.println(myDouble);
//스트링을 입력받을 때에는 줄 전체를 입력받는다고 해서
//nextLine()
// System.out.print("이름을 입력해주세요: ");
// String name = scanner.nextLine();
// System.out.println("이름: "+name);
//위의 코드는 실행이 제대로 되지 않는다.
//왜냐하면 nextLine() 전에 nextInt()와 nextDouble()을 썼기 때문이다.
//우리가 입력을 끝낼 때 무엇을 입력하는가? 엔터키
//엔터키는 숫자인가 문자인가? 문자
//nextInt, nextDouble은 무엇을 입력받는가?
//숫자와 실수
//그러면, nextInt, nextDouble은 엔터키를 어떻게 처리할까?
//스캐너는 버퍼메모리라는 곳에 입력되는 키보드 값들을 쭉 읽으면서
//어떤 값을 가지고 가서 우리의 변수에 넣을지 메소드를 통해서 결정한다.
//예를 들어서
//nextInt()가 써진 곳에서는
//우리가 키보드 입력을 하면 그 입력을 한 값이 곧장 들어가는게 아니라 버퍼 메모리에 일단 임시저장되고
//nextInt()가 그 값을 검증하고 가져가게 된다
//그냥 숫자부분만 읽어가고 엔터키는 놓고간다.
//그에 반해서 nextLine은?
//엔터키도 가져갈 수 있기 때문에 nextInt(), nextDouble()등이 놓고간
//엔터키를 보고 "아 사용자가 아무런 입력없이 종료시켰구나!" 라고 이해하게 된다
//따라서 우리는 값을 입력할 수 없게 되는 것이다
//그렇다면 우리가 진짜 값을 받아들이기 전에 입력되어있던 엔터키들을 비워줘야 하는 것이다.
//엔터키를 입력하는 방법은 간단하다
//scanner.nextLine을 입력되기 전에 한번 써주면 되는 것이다
System.out.println("나이를 입력해주세요: ");
int age = scanner.nextInt();
//스캐너. nextLine()을 한번 요렇게만 실행시켜 보자.
//단 이클립스의 자동완성 기능이 abc순서이기 때문에
//nextLIne이라고 입력하고 엔터를 누르면?
//hasNextLine()이 적히게 된다
//그러니까 꼭 nextLine() 으로 적혀있는지 확인하자
scanner.nextLine();
//위의 scanner.nextLine을 한번 써주고 나서
//스트링을 입력받으면 된다.
System.out.print("이름을 입력해주세요:");
String name = scanner.nextLine();
System.out.println("이름:"+name+", 나이: "+age);
//스캐너는 버퍼 메모리라는 곳에서 값을 읽어오기 때문에
//다 쓰고나면 close()라는 메소드를 통해서
//닫아줘야 한다.
scanner.close();
}
}
JAVA