일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SQL
- 브랜치
- 기본생성자
- 에러
- 자바
- 깃허브
- 상속
- git
- DTO
- html tag
- HTML
- 프로그래머스
- 알고리즘
- Python
- github
- 코드업
- 캡슐화
- 부트캠프
- @builder
- Codeup
- CRUD
- entity
- lv1
- 파이썬
- java
- @AllArgsConstructor
- HashSet
- stringbuffer
- @NoArgsConstructor
- 부스트코스
- Today
- Total
잉?
[Java] Scanner 클래스의 메소드 next(), nextLine() 차이 알아보기 + 주의점! 본문
Scanner는 값을 입력받을 때 사용하는 클래스이다.
이 클래스 안에 다양한 메소드가 있는데 그중 next()와 nextLine()을 짚고 넘어가겠다.
일단 코드 구조를 보면 어떻게 사용하는지 알 수 있다.
Scanner sc = new Scanner(System.in); // sc라는 Scanner 객체를 선언한다.
String input = sc.next(); // input이라는 변수에 sc.next()메소드를 통해 값을 입력한다.
System.out.println(input); // 입력한 값을 출력한다.
더 자세히 알아보자.
next()와 nextLine()은 문자열을 반환하는 메서드이다.
그렇다면 이 둘의 차이점은 무엇일까?
next()는 개행문자를 무시하고 입력을 받는다. 즉, 공백 전까지만 입력받는다.
nextLine()은 개행문자를 포함해서 입력받는다. 즉, 한 줄 단위로 입력을 받는다.
여기서 개행문자라는 것은 \n, \r... 공백을 말한다.
next()와 nextLine()을 사용할 때의 주의점은?
예시를 들어보자면 아래의 코드를 작성했다.
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
float star = sc.nextFloat();
String input1 = sc.nextLine();
String input2 = sc.nextLine();
String input3 = sc.nextLine();
String input4 = sc.nextLine();
String input5 = sc.nextLine();
----------------------------------------------------------------------------------
[예상 출력결과]
입력) 출력)
Dahlia Dahlia
5.0 별점 : 5 (100.0%)
하나 1. 하나
둘 2. 둘
셋 3. 셋
넷 4. 넷
다섯 5. 다섯
하지만 결과는 이렇다.
별점 이후로 밀려서 출력이 됐다.
그 이유가 무엇일까? 알아보자.
nextLine()은 공백을 포함한다.
next()는 공백을 포함하지 않는다. 즉, 공백 전까지만 입력받는다.
float star = sc.nextFloat();
String input1 = sc.nextLine();
코드를 보면 star라는 변수에 값을 넣어준 뒤 enter를 누르고 다음 input1 변수에 값을 넣어준다.
여기서 답이 나왔다.
next() 즉, nextFloat()는 enter(공백) 전까지의 값을 포함한다.
이 enter(공백)는 다음 input1의 값으로 들어가게 되는 것이다.
왜냐? nextLine()은 공백을 포함하기 때문에.
그래서 한 줄씩 밀려서 출력되었던 것이다.
그렇기에 next()와 nextLine() 사이에 공백을 먹어줄 nextLine() 메서드를 한번 더 추가해 줘야 한다.
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
float star = sc.nextFloat();
sc.nextLine();
String input1 = sc.nextLine();
String input2 = sc.nextLine();
String input3 = sc.nextLine();
String input4 = sc.nextLine();
String input5 = sc.nextLine();
↓ sc.nextLine(); 추가 후 결과값
next()와 nextLine()의 차이점과 주의점에 대해 알아보는 시간이 되었다.
'자바(Java)' 카테고리의 다른 글
[Java] static이란? (클래스변수, 인스턴스변수) (0) | 2023.06.02 |
---|---|
[Java] Object클래스, equals() 알아보기 (0) | 2023.05.26 |
[Java] 추상클래스란? abstract? + extends와 오버라이딩 (0) | 2023.05.24 |
[Java] 컬렉션(Collection) 알아보기 + Objects.equals() (2) | 2023.05.23 |
[Java&eclipse] 너무 나도 쉬운 Java&eclipse 다운로드 (설치 및 환경 설정까지) (0) | 2022.03.13 |