CODEDRAGON ㆍDevelopment/Java
입력버퍼 비우기
Scanner 클래스를 이용하여 입력을 받을 때 버퍼에 남은 데이터를 비우기
화이트스페이스로 인한 비정상 출력
원인
숫자입력후 바로 문자를 입력받는 경우 콘솔입력을 받는게 아니라 버퍼에 있는 데이터를 가져오게 되어 바로 문자입력을 받지 않고 출력해버립니다. (즉, 버퍼에 있는 \n문자를 가져오게 됩니다)
숫자형 데이터 입력을 받은 직후 문자를 입력받아야 한다면 버퍼를 비워준후 입력을 받아야 합니다.
입력버퍼 비우는 방법
입력전에 버퍼를 비워주는 구문을 삽입해 줍니다.
- input.nextLine();
- input.skip("[\\r\\n]+");
버퍼에 입력된 문자열을 개행문자 \n 까지 가져오기
input.nextLine(); |
입력 버퍼에 남아있는 개행문자 '\r\n' 제거하기
input.skip("[\\r\\n]+"); |
버퍼 비운후 정상 출력
소스코드
비정상 출력 코드
public class ConsoleInputEx05 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
//문제발생 System.out.println("정수입력 > "); int n = input.nextInt(); System.out.println("n: " + n); System.out.println("원하는 요일을 입력하세요(영문 소문자) > "); String str = input.nextLine(); System.out.println("str: " + str);
} }
|
해결방법1 - input.nextLine();
public class ConsoleInputEx05 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
//방법 1 - input.nextLine(); System.out.println("정수입력 > "); int n = input.nextInt(); System.out.println("n: " + n); System.out.println("원하는 요일을 입력하세요(영문 소문자) > ");
input.nextLine(); //버퍼비우기 //버퍼에 입력된 문자열을 개행문자 \n 까지 가져오기 String str = input.nextLine(); System.out.println("str: " + str);
//방법 2 - input.skip("[\\r\\n]+"); System.out.println("정수입력 > "); int n = input.nextInt(); System.out.println("n: " + n); System.out.println("원하는 요일을 입력하세요(영문 소문자) > ");
input.skip("[\\r\\n]+"); //버퍼비우기 //입력 버퍼에 남아있는 개행문자 '\r\n' 제거하기 String str = input.nextLine(); System.out.println("str: " + str); } } |
해결방법2 - input.skip("[\\r\\n]+");
public class ConsoleInputEx05 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
//방법 2 - input.skip("[\\r\\n]+"); System.out.println("정수입력 > "); int n = input.nextInt(); System.out.println("n: " + n); System.out.println("원하는 요일을 입력하세요(영문 소문자) > ");
input.skip("[\\r\\n]+"); //버퍼비우기 //입력 버퍼에 남아있는 개행문자 '\r\n' 제거하기 String str = input.nextLine(); System.out.println("str: " + str); } } |
'Development > Java' 카테고리의 다른 글
public static void main( ) (0) | 2015.08.13 |
---|---|
상속, 인스턴스 (0) | 2015.08.12 |
패키지(Package) 생성방법 (0) | 2015.08.10 |
객체형 배열, 객체형 배열 도식도 (0) | 2015.08.09 |
import 선언 - import 선언 형식, import 후 인스턴스 생성, import 후 인스턴스 생성 (0) | 2015.08.05 |