Java 입력

Scanner

import java.util.Scanner;

public class example {
		
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("입력 : ");
		String name = scanner.next();
		int intNum = scanner.nextInt();
		double doubleNum = scanner.nextDouble();
		boolean condition = scanner.nextBoolean();
		
		System.out.printf("%s / %d / %f / %b%n", name, intNum, doubleNum, condition);
		
		String problem = scanner.nextLine();
		
		System.out.printf("마지막으로 %s가 입력되었습니다.%n", problem);
	}

}


Scanner 클래스의 메소드들은 키보드로 부터 입력받은 내용을 토큰단위로 하나씩 읽는다.
Scanner 클래스의 다른 메소드들과 nextLine() 메소드를 혼용할 때 주의해야 한다. 타입을 지정해서 받는 메소드들은 'Enter'를 무시하고 읽어들이는데, 이 때 위의 예시와 같이 입력 스트림에 남아있던 'Enter'를 의도와 다르게 nextLine() 메소드가 읽는다. 참고로 nextLine() 메소드는 'Enter'를 포함하는 한 라인을 읽고 읽은 내용에서 'Enter'를 버린 후 반환한다.

BufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class example {
		
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = null;
		
		System.out.print("입력 : ");
		try {
			line = br.readLine();
		}catch(IOException e) {
			e.printStackTrace();
		}
		
		StringTokenizer st = new StringTokenizer(line);
		
		String name = st.nextToken();
		int intNum = Integer.parseInt(st.nextToken());
		double doubleNum = Double.parseDouble(st.nextToken());
		boolean condition = Boolean.parseBoolean(st.nextToken());
		
		//String array[] = line.split(" ");
		
		System.out.printf("%s / %d / %f / %b%n", name, intNum, doubleNum, condition);
	}

}


Scanner 클래스와 다르게 버퍼를 사용하여 많은 양의 내용을 입력받을 경우 효율적이고 빠른 작업이 가능하다. readLine() 메소드를 통해 한 줄의 내용을 입력받아 String 타입의 변수에 저장하고, 내용을 가공하는 방식으로 사용한다.

좋은 웹페이지 즐겨찾기