728x90

 


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로 찾아서 사용하세요 )
 

Scanner (Java Platform SE 8 )

Scans the next token of the input as a float. This method will throw InputMismatchException if the next token cannot be translated into a valid float value as described below. If the translation is successful, the scanner advances past the input that match

docs.oracle.com

 

 

728x90

+ Recent posts