Scanner?
처음 국비교육을 들었을 때 변수 다음으로 배우게 된 개념!
콘솔창에 사용자가 값을 입력하면 그 값을 받아들이는 개념으로 당시에 기억했다.
배울 당시에는 무난무난하게 사용하고 실습했던 기억이 있지만 Remind하자는 목적으로 당시 코드를 사용하면서 복습을 해보자!
Scanner 기능을 사용하기 위해 java.util.Scanner를 import 했다.
Scanner 기능을 사용하기 위해선 java.util 패키지의 Scanner를 import 해야한다.
Scanner 객체 생성 후 콘솔창에는 어떻게 출력이 되게 될까?
결과는?
내가 입력한 내용은 이런 글씨색으로 나타나고 그 결과 입력한 내용이 출력되는 것을 확인 할 수 있다.
그런데 여기서 nextLine()은 무엇이었을까?
nextXXX()
1. nextLine(): 쉽게 말해서 사용자가 엔터를 치기 전까지 입력한 값을 모두 가져오는 메소드라고 생각하면 된다
이것과 유사하게 사용할 수 있는 next() 메소드가 있는데 nextLine()과의 차이를 알아보자
두개의 메소드를 확인 해본 결과 차이점이라고 한다면
next() | nextLine() |
사용자가 입력한 값에서 공백 전까지의 값을 저장 | 사용자가 엔터를 치기 전까지 값을 저장 |
그렇기 때문에 next()를 사용한다면 스페이스바를 사용할 필요가 있는 문자열을 입력하게 될 경우 제대로 된 값을 저장하지 못할수도 있다.
2. nextInt(): 정수값을 입력했을 때 그 값을 저장하기 위한 메소드!
nextInt()를 사용했을 때 알아둬야하는 중요한 정보가 있는 데nextLine()을 사용하면 엔터가 버퍼에 남아있지 않지만, nextInt()를 사용하게 되면 버퍼에 엔터가 남아 사용자가 입력하기도 전에 넘어가지게 된다이를 확인해보자
이와 같이 중간에 정수를 입력받는 코드를 추가하고 결과를 확인해본다면
두번째 문자열을 입력하기도 전에 terminated가 된 것을 확인할 수 있다.
이를 해결하기 위해서는 버퍼에 남아있는 엔터를 비워주는 코드를 추가해주면 되는데
코드 중간에 nextLine() 메소드 하나만 추가하면 끝!
정수를 입력하고 마지막 입력도 되는 모습을 확인할 수 있다.
마지막으로 close()는 항상 Scanner 사용 후 닫아주는 습관을 들여줘야한다!
그러면 첫번째 복습 끝!
세줄요약
1. Scanner 객체는 java.util에 있는 것을 import하기
2. nextInt() 후에 또 입력받을 내용이 있다면 버퍼에 남아있는 엔터를 지워주는 코드를 작성해야 한다.(nextLine())
3. Scanner 사용 후 close() 습관화하기
'Dev > Java' 카테고리의 다른 글
05-1. 다양한 함수(Math.random) (1) | 2023.07.25 |
---|---|
04-2.ArrayCopy(깊은 복사) (0) | 2023.07.17 |
04-1.ArrayCopy (얕은 복사) (0) | 2023.07.17 |
03. continue (0) | 2023.07.12 |
02.while / do-while (0) | 2023.07.12 |