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 |