반응형
Scanner 클래스
Scanner 클래스의 특징
- Scanner 를 사용 시 java.util 패키지의 Scanner 클래스를 import 해주어야 한다.
- 입력 받을 시 Scanner 클래스의 메서드 (method) 로 입력받을 수 있다.
- Scanner 클래스의 입력 메소드들은 공백과 개행을 기준으로 인식한다.
Scanner 사용 순서
1. Scanner 클래스를 import 해준다.
import java.util.Scanner;
2. Scanner 객체를 생성한다.
Scanner sc = new Scanner(System.in);
// System.in - 입력한 값을 Byte 단위로 읽어주는 Java 의 표준 입력 스트림
3. 생성한 객체를 이용해 데이터 타입마다 구분된 메서드로 입력 값을 받는다.
String str = sc.next();
메소드 | 기능 |
next() | String을 읽음. 토큰(Token)을 기준으로 읽음. |
nextLine() | String을 읽음. 개행(Enter)을 기준으로 읽음. |
nextInt() | int 를 읽음 |
nextBoolean() | boolean 을 읽음 |
nextByte() | byte 를 읽음 |
nextShort() | short 를 읽음 |
nextLong() | long 을 읽음 |
nextFloat() | float 를 읽음 |
nextDouble() | double 을 읽음 |
( * 토큰(Token) : 공백문자 (Spacebar, Tab, Enter 등) 로 구분되는 요소)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(str);
}
}
next() vs nextLine()
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
String str;
System.out.println("num입력");
num = sc.nextInt();
System.out.println("str입력");
str = sc.nextLine();
System.out.println("num : " + num);
System.out.println("str : " + str);
sc.close();
}
}
// 출력
num : 10
str :
코드의 의도는 num 과 str 을 입력받는 것인데 num 을 입력하고 나면 str 입력은 스킵되고 바로 주석에 있는 대로 출력된다.
이는 next() 는 개행 문자를 무시하고 입력을 받고, nextLine() 은 \n 단위로 입력을 받기 때문인데
위 코드에서 num 을 next() 로 입력받을 때 10을 입력 후 enter (\n) 을 쳤지만 10 까지만 인식하고 \n 은 버퍼에 그대로 남게 된다.
str 은 nextLine() 으로 입력을 받는데 버퍼에 이미 \n 이 남아있기 때문에 따로 입력 과정을 거치지 않고 바로 결과값이 출력되게 된다.
* 해결 방법
nextLine() 을 next() 로 바꿔준다.
반응형
'개발 ━━━━━ > Java' 카테고리의 다른 글
[Java] 기초 문법 - 컬렉션 (Collection) (0) | 2023.08.16 |
---|---|
[Java] 기초 문법 - 배열 (0) | 2023.08.16 |
[Java] 기초 문법 - 조건문, 반복문 (0) | 2023.08.15 |
[Java] 기초 문법 - 연산자 (0) | 2023.08.15 |
[Java] 기초 문법 - 자료형 (0) | 2023.08.14 |