본문 바로가기
국비 교육/백엔드(Java, Spring)

[자바] 입력 버퍼 (Buffer)

by 육츠 2024. 1. 18.
Contents 접기

버퍼를 비우려면?

import java.util.Scanner;

public class InputBufferTest {

	public static void main(String[] args) {
		int i;
		Scanner scanner = new Scanner (System.in);
        
        while(true) {
			System.out.print("값 입력: ");
			i = scanner.nextInt();
			System.out.println("입력한 값 ==> "+ i);  // i = 메모리
			}

값 입력: 25 77 12
입력한 값 ==> 25   // 25만 가져감
값 입력: 입력한 값 ==> 77 // 버퍼에 아직 값이 남았기 때문
값 입력: 입력한 값 ==> 12 //

버퍼가 비워질 때까지 진행된다. (엔터를 만날때까지)

scanner.nextLine();

space 를 하나의 문자열로 인식 ( = 줄 단위로 입력 받는것)
맨 앞의 엔터는 버린다.
버퍼에 있는 데이터를 한 번에 가져가기 때문에 입력 버퍼가 비워지는 역할을 한다.

		String data;
		while(true) {
			System.out.print("값 입력: ");
			// data = scanner.next();  // 단어만 입력 받을 수 있음
			data = scanner.nextLine(); // space 를 하나의 문자열로 인식 ( = 줄 단위로 입력 받는것) .. 맨 앞의 엔터는 버림
			// 버퍼에 있는 데이터를 한 번에 가져가기 때문에 입력 버퍼가 비워지는 역할을 한다.

			System.out.println("입력한 값 ==> "+ data);

값 입력: ab 42.196
입력한 값 ==> ab
값 입력: 입력한 값 ==> 42.196 // 숫자처럼 보이는 문자

값 입력: ab 42.195
입력한 값 ==> ab 42.195

 

next 와 nextLine

		String data;

		System.out.print("값 입력 -1 : ");
		data = scanner.next();  // 단어 입력
		System.out.println("입력한 값 1 ==> "+ data);

		System.out.print("값 입력 -2 : ");
		data = scanner.nextLine(); // 문장 입력
		System.out.println("입력한 값 2 ==> "+ data);
		
		System.out.println("END");

- next

값 입력 -1 : one
입력한 값 1 ==> one
값 입력 -2 : 입력한 값 2 ==>

// 버퍼 안에 엔터가 남아있기 때문에 그것을 문장이라 인식

- nextLine

값 입력 -1 : abc
입력한 값 1 ==> abc
값 입력 -2 : feg
입력한 값 2 ==> feg
END
// 정상적으로 작동

 

처음의 코드에서 앞의 단만 가져오게 하려면?

nextLine(); 
버퍼에 있는 값을 가지고 와서 사용하지 않기 때문에 대입하지 않음.

		while(true) {
			System.out.print("값 입력: ");
			i = scanner.nextInt();
			System.out.println("입력한 값 ==> "+ i);  // i = 메모리

			scanner.nextLine(); // 버퍼에 있는 값을 가지고 와서 사용하지 않기 때문에 대입하지 않음.
			}

scanner.nextLine(); 사용
값 입력: 10
입력한 값 ==> 10
값 입력: 10 20 30
입력한 값 ==> 10

 

'국비 교육 > 백엔드(Java, Spring)' 카테고리의 다른 글

[자바] 배열 Array  (0) 2024.01.22
[자바] 반복문 -2 (do-while, for)  (0) 2024.01.18
[자바] 반복문 -1 (While)  (0) 2024.01.17
[자바] 연산자 Operator -2, Switch  (0) 2024.01.17