TIL(Today I Learned)

[Java] Scanner 클래스에 대하여

yunseohhe 2024. 7. 24. 20:17

안녕하세요.^^

저도 저번주 15일(월)부터 자바에 처음 입문한 사람입니다.

저는 입력하는 형태에 대해 알고 코드 짜는 것이 맞다고 생각하여 강의만 주구장창 보면서, 강의에서 나오는 코드만 따라치는 수준(?)으로만 공부하고 있었습니다.

 

그러다보니 형태는 좀 알겠는데, 생각하는대로 막상 안쳐지더라구요...

 

그런데 막상 경험해보니 왜 주변에서 다들 일단 코드를 쳐보라고 했는지 알았습니다.

 

그래서 저처럼 완전 처음인 사람을 위해

알아두면 좋을 Scanner에 관해서 알아보겠습니다!

 

 

1. Scanner 클래스란?

  • 사용자로부터 입력을 받을 수 있도록 도와주는 것입니다.
  • Scanner라는 클래스를 자바에서 만들어놔서 저희는 만들어져있는 클래스를 가져와서 사용한다고 생각하면 되요!
  • 사용 방법 
import java.util.Scanner;

Scanner sc = new Scanner(System.in);

    - Scanner 클래스를 사용하기 위해서는 항상 import가 되었는지 꼭 확인해야 합니다!! 

       ( cf : java.util 패키지 안에 Scanner 클래스가 있으므로 위에 나온 코드처럼 해당 클래스 경로를 호출한 것입니다)

    - sc : Scanner 클래스의 이름입니다.

    - new Scanner(System.in) : 새로운 스캐너를 가져오기 위해 System.in을 입력

       (  cf : 더 정확히 보면, System 클래스의 in이라는 필드를 통해 연결된다는 의미입니다!!)

 

  • 추가로 말씀드리자면, 위의 코드 두번째 줄은 바로 "객체생성"한 것입니다.
  • 기본적으로 객체 생성하는 방법은 밑의 예시와 같습니다.
클래스 객체이름 = new 클래스(System.in);

 

 

2. Scanner의 메소드를 이용하여 입력하기

일단 기본적으로 알면 좋은 메서드로만 설명드리겠습니다!

 1) next( ) - String(문자열타입)

  • 다음 토큰을 String 타입으로 반환
  • 띄어쓰기 뒷 부분은 읽지 않습니다.
  • 예시

코드 입력 부분
입력 & 출력 부분

 2) nextLine( ) - String(문자열타입)

  • 띄어쓰기 포함하여 한줄을 모두 읽는다
  • 단, "\n(Enter)" 값 다음은 못읽습니다.( cf : Enter 치기 전까지 읽는구나 생각하면 쉽습니다!)
  • 예시 (띄어쓰기까지 읽히는 것을  확인해주세요!)

코드 입력 부분
입력 & 출력 부분

2-1) nextLine 메서드를 사용할 때 주의사항!!

  • nextLine 메서드는 띄어쓰기까지 읽기때문에 연속으로 출력할 경우에는 밑에와 같은 문제가 발생할 수 있는데요

코드 입력
입력 & 출력

  • nextLine이 개행을 인식하기 때문에 생긴 문제인데요, 이 문제는 밑에 "nextLine()"을 공백으로 입력해두어 해결하면 됩니다.

코드 수정
입력 & 출력

 

 

입문자분들이 보기 쉽게 정리해보았는데

혹시 질문사항이나 틀린 부분이 있는 경우 댓글 남겨주시면 감사하겠습니다.

감사합니다. 화이팅!!