import java.util.*을 사용함으로써 scan을 사용할 수 있는데
이는 사용자가 키보드로 수치를 입력할 수 있다.
정수형이면 scan.nextInt()
실수형이면 scan.nextFloat()를 사용한다.
근데 아래의 출력을 보면
마지막 str1을 입력하지 않았는데 자동으로 Hello와 World 잘려서 바로 출력됨을 알 수 있다.
import java.util.*;
public class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("정수를 입력하세요:");
int num =scan.nextInt();
System.out.println("num = " + num);
System.out.print("실수를 입력하세요:");
float f = scan.nextFloat();
System.out.println("f = " + f);
System.out.print("문자를 입력하세요:");
String str = scan.next();
System.out.println("str = " + str);
//scan.nextLine();//버퍼비우기(스트림 비우기)
System.out.print("문자를 입력하세요:");
String str1 = scan.next();
System.out.println("str1 = " + str1);
}
}
이에 대한 원인으로
scan.next();
공백을 기준으로 한 단어 또는 한 문자씩 입력받는다.
버퍼에 입력된 문자나 문자열에서 공백 전까지의 단어를 읽는다.
scan.nextLine();
문자 또는 엔터를 치기 전까지의 문장 전체를 입력받는다.
버퍼에 입력된 문자열을 개행 문자까지 다 가져온다.
따라서 이 문제점을 scan.nextLine();을 사용함으로서 문제를 해결할 수 있다.
앞에 Hello가 출력되고 나서 그 다음 버퍼에 World가 출력되어야 하는데
scan.nextLine(); 을 사용하여 버퍼를 비울 수 있기 때문이다.
import java.util.*;
public class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("정수를 입력하세요:");
int num =scan.nextInt();
System.out.println("num = " + num);
System.out.print("실수를 입력하세요:");
float f = scan.nextFloat();
System.out.println("f = " + f);
System.out.print("문자를 입력하세요:");
String str = scan.next();
System.out.println("str = " + str);
scan.nextLine();//버퍼비우기(스트림 비우기)
System.out.print("문자를 입력하세요:");
String str1 = scan.next();
System.out.println("str1 = " + str1);
}
}
이번에는 또 다른 문제가 생겼다.
Hello World를 출력하고 싶은데 앞에 Hello만 잘려서 나온 것이다.
왜냐하면 위에 설명한 것 처럼
그냥 next는 공백을 기준으로 잘라서 출력하고
Line을 이어서 붙어 주어야만 엔터를 했을 때를 기준으로 출력하기 때문이다.
import java.util.*;
public class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("정수를 입력하세요:");
int num =scan.nextInt();
System.out.println("num = " + num);
System.out.print("실수를 입력하세요:");
float f = scan.nextFloat();
System.out.println("f = " + f);
System.out.print("문자를 입력하세요:");
String str = scan.next();
System.out.println("str = " + str);
scan.nextLine();//버퍼비우기(스트림 비우기)
System.out.print("문자를 입력하세요:");
String str1 = scan.nextLine();
System.out.println("str1 = " + str1);
}
}
'Java > 패스트캠퍼스 자바' 카테고리의 다른 글
[패스트캠퍼스]자바 개발 도구 설치 (1) | 2024.10.26 |
---|---|
[패스트캠퍼스] 자바 foreach문 (0) | 2024.10.07 |
[패스트캠퍼스] 다차원 배열 (0) | 2024.10.01 |
[패스트캠퍼스] 객체 생성 (4) | 2024.10.01 |
[패스트캠퍼스] 대문자 문자열을 소문자로 변경하기 (2) | 2024.09.28 |