Scanner
java.util.Scanner
객체 생성 및 사용 예시
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in); //객체 생성
String s1 = sc.next(); // 구분자로 분리된 문자열 1개
String s2 = sc.nextLine(); // 엔터 이전의 한 라인 전체
int n1 = sc.nextInt(); // 구분자로 분리된 정수 1개
double d1 = sc.nextDouble(); // 구분자로 분리된 실수 1개
sc.close(); //객체 종료 : 안하면 경고 뜸.
}
}
1. 문자열 입력
1) .next()
//input : hi there
String s1 = sc.next(); // s1 : hi
String s2 = sc.next(); // s2 : there
- 콤마(,),공백(\t),엔터(\n)를 기준으로 문자열을 잘라서 입력받음.
- 따라서 문자열 내에 엔터, 공백등은 입력되지 않음.
2) .nextLine()
//input : hi there
String s = sc.nextLine(); // s : hi there
- 엔터(\n)까지의 문자열 전체를 받음.
- 문자열 내에 \n을 포함해서 받음을 주의.
📢next와 nextLine을 혼용해서 사용할 경우, next에서 입력받지 못한 \n(개행)을 주의해야 함.
- next에서 입력받지 못한 개행문자는 nextLine하나를 통째로 날려버릴 수 있음.
즉, 다음 라인을 입력받지 못하고 개행문자 하나만 입력받게 됨. - 이런 경우 그냥 nextLine을 한 번 더 써서 개행을 지워주면 됨.
2. 문자 입력받기
📢 .nextChar() 메소드는 존재하지 않음!
//input : abc def
char c = sc.next().charAt(0); // c : a
- 이런식으로 문자열을 받아온 다음에 charAt메소드를 사용해서 받아온다.
3. 나머지 기타 등등 입력받기
- 모두 .nextXX()의 형태이니 골라서 사용하면 됩니다.
int n = sc.nextInt();
double d = sc.nextDouble();
boolean b = sc.nextBoolean();
4. .hasNext()
- 다음 토큰이 있으면 true, 없으면(즉, EOF의 경우) false를 반환.
- EOF가 아니면 입력이 있을 때까지 무한 대기 하므로 주의가 필요.
while (sc.hasNext()) {
//TODO
}
- 이외에 hasNextInt(),hasNextDouble().. 등으로 hasNextXXX() 형식을 취하고 있으니 골라서 사용하면 됩니다.
구체적인 설명이 필요하다면 아래 문서를 참고하세요. ( Ctrl + F로 찾아서 사용하세요 )
'언어 공부 > JAVA' 카테고리의 다른 글
[JAVA] 난수 표현하기 ( Random ) (0) | 2021.07.22 |
---|---|
[JAVA] 연산자 우선순위 및 연산 대상 (0) | 2021.07.22 |
[JAVA] 묵시적 (Implicit) vs 명시적(Explicit) 형변환 : Type Casting (0) | 2021.07.22 |
[JAVA] 데이터 타입 | 크기 | 범위 ( Data type : Reference vs Primitive ) (0) | 2021.07.22 |