인프런 커뮤니티 질문&답변

김상준님의 프로필 이미지
김상준

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이3

7장 스캐너 문제풀이3

작성

·

236

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

input.nextLine(); 이거말고 처음에 Scanner scanner = new Scanner(System.in) 이걸 우연히 while 안에 넣어서 해도 되는걸 확인했는데 이런 방법은 좋은 방법이 아닌가요?

답변 1

0

안녕하세요. 김상준님, 공식 서포터즈 OMG입니다.

반복문 안에서 scanner를 매번 실행할 때 마다 생성하는 아래 방식보다는

while() {
    Scanner scanner = new Scanner(System.in);
}

특별한 이유가 없다면 아래와 같이 반복문 실행 전에 딱 1번만 생성하는 것을 권장드립니다 😀

물론 강의 코드 기준 실행에는 문제가 없는게 맞습니다 ^^

Scanner scanner  = new Scanner(System.in);
while() {
  scanner. ...
}

감사합니다.

저도 같은 내용으로 궁금증이 생겼어요!
이전 지역 변수와 스코프 강의에서 설명하셨던 내용 중 단순한 카운트 기능만 하는 int i와 같이 반복문 안에서만 사용되는 Scanner 객체가 계속 main 메서드에 남아 있는 것은 불필요한 메모리가 되지 않을까?라는 생각이 들어요.. 반면 while문 밖에 Scanner 객체를 선언한다면 반복문을 계속 돌 때 계속해서 Scanner 객체를 생성하지 않아도 되니 시간복잡도가 더 낮아지지 않을까 하는 생각도 같이 들어요. 어떤 방식이 더 효율적인지 그리고 이유가 무엇인지 궁금합니다

김상준님의 프로필 이미지
김상준

작성한 질문수

질문하기