Scanner 클래스로 입력 받기
Scanner클래스?
스캐너 클래스에서 입력을 받는 것을 해보겠습니다.
스캐너 클래스에서 함수를 사용하기 위해서는 import문으로 선언합니다. 위의 import문은 java에 있는 util에 있는 Scanner 클래스를 사용하겠다는 의미입니다.
밑에 구문은 Scanner sc = new Scanner(System.in);
new 연산자에 대해서는 앞으로 자세하게 포스팅을 하겠습니다. 간단히 설명을 하자면, new 연산자를 통해서 객체가 생성됩니다. 그 객체는 참조변수의 성격을 가지고 있으며 sc라는 변수에 생성되는 객체의 주소값을 담습니다. 즉 sc라는 변수는 stack에 저장 객체는 heap에 저장됩니다. System.in은 입력받은 값들을 바이트 단위로 받아들이겠다라고 생각하시면 됩니다.
그렇다면 스캐너로 이름 나이 키 국적을 입력 받아서 출력하는예제를 만들어 보겠습니다.
System.out.println문으로 출력을 합니다. 당신의 이름은 무엇입니까? 을 출력하고 String name의 변수를 선언합니다.
그리고 입력받은 sc변수에 .next(); 혹은 .nextLine(); 메소드를 통해서 문자열을 받아옵니다. 그리고 name에 그 주소값을 넣습니다.
next(); 은 문자열을 공백 전까지 받아오는 메소드 입니다. nextLine();은 문자열을 엔터 전까지 받아오는 메소드입니다.
nextInt(); 는 정수형으로 그 값을 받습니다. nextDouble(); 는 실수형으로 그 값을 받습니다. sc.에서 어떤값을 받아야 하는지 eclipse가 선택사항을 보여주기 때문에 해당에 맞는 데이터타입을 받으시면 됩니다.
다음과 같이 변수를 선언하고 하나씩 받아 보고 출력을 해봅시다. system.out.println 출력문에서 각종 받은 변수들을 넣어주면서 문자열을 추가해서 출력을 해봅시다.
주의
여기서 주의 할점은 sc.nextLine(); 을 한번 해야합니다. nextLine(); nextInt(); nextDouble(); 을 받으면서 버퍼 공간에 엔터가 한번 제거 되지 않았습니다. 저 구문에서 sc.nextLine();을 넣지 않고 실행하면 밑에 system구문까지 넘어가지 않습니다.
다음 구문은 위 코드에서 sc.nextLine();을 주석처리하고 실행하였습니다 . 이름 바보 나이 444 키 200을 입력하여서 출력이 되었지만 국적을 묻는 출력문이 나오지 않습니다.
다음은 정상적으로 실행하였을때 출력문을 보여주겠습니다.
정상적으로 입력을 받고 처리하면 다음과 같이 됩니다.
'자바-자린이의 도전기' 카테고리의 다른 글
Printf문 (0) | 2022.03.14 |
---|---|
형변환? (0) | 2022.03.14 |
검은화면 좋아하시나요? (0) | 2022.03.12 |
변수란? (0) | 2022.03.10 |
Hello world~ 출력하기 (0) | 2022.03.07 |