Scanner (표준 입, 출력 객체 지원 클래스)
1. Scanner
: java.util 패키지에 들어있는 클래스 (java.util.Scanner)import로 불러와서 사용해야 한다.( import 단축키 - Ctrl + Shift + O )
package input;
import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다
public class Input {
public static void main(String[] args) {
// System.out : 표준 출력 객체
// System.in : 표준 입력 객체
Scanner sc;
// Scanner 클래스 : 데이터를 읽어오는 도구
// Scanner : 자료형(type), sc : 변수 이름
sc = new Scanner(System.in);
// sc라는 변수에 공간을 생성한다
System.out.print("이름 입력 : ");
String name = sc.next(); // next() : 입력 받는 키 값을 문자열로 가져온다
// 이 값을 name이라는 문자열 변수로 저장한다
System.out.println("입력 받은 이름은 " + name + " 입니다");
sc.close();
// - scanner는 사용 후 종료를 시켜주는 것이 바람직하다
}
}
저장할 변수 이름이 sc 일 필요는 없다.
또한, Scanner 를 선언하면서 동시에 초기화할 수 있다.
Scanner abc = new Scanner(System.in);
package input;
import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다
public class Input {
public static void main(String[] args) {
// 1. 키보드 값을 입력받기 위해서 Scanner를 생성
Scanner scan = new Scanner(System.in);
// 2. 키 값을 저장할 변수를 선언
String name;
int age;
double height;
// 3. 입력 진행
System.out.print("이름 : ");
name = scan.next(); // next() : 키 값을 문자열로 가져온다
System.out.print("나이 : ");
age = scan.nextInt(); // nextInt() : 키 값을 정수로 가져온다
System.out.print("신장 : ");
height = scan.nextDouble(); // nextDouble() : 키 값을 실수로 가져온다
// 4. 입력받은 내용을 원하는 대로 출력한다
System.out.printf("이름 : %s (%d세)\n", name, age);
System.out.println("신장 : " + height + "cm");
scan.close();
}
}
Scanner는 입력된 키 값을 '버퍼(buffer)' 라는 임시 공간을 활용해서 가져온다.
※ 버퍼는 enter와 space를 구분자로 인식한다 ※
package input;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2;
System.out.print("두 정수 입력 : ");
// 콘솔 입력창에서 10 20 30 40 50 60 을 입력
// 버퍼는 enter와 space를 구분자로 인식하기 때문에
// 버퍼에 10 값이 스페이스바 때문에 n1으로 구분되어 들어가고
// 버퍼에 20 값이 스페이스바 때문에 n2로 구분되어 들어간다
n1 = sc.nextInt();
n2 = sc.nextInt();
System.out.printf("n1 = %d, n2 = %d\n", n1, n2);
int n3, n4;
System.out.print("다시 두 정수 입력 : ")
// 정수를 다시 입력받으려 했으나 위에서 입력한 값에서
// 10과 20은 n1과 n2로 할당되었고 뒤에 남은 30과 40값이
// 구분자에 의해 자동으로 n3와 n4로 할당된다
n3 = sc.nextInt();
n4 = sc.nextInt();
System.out.printf("n3 = %d, n4 = %d\n", n3, n4);
sc.nextLine(); // 버퍼의 모든 데이터를 가져온다
// - 엔터만 구분자로 인식
int n5, n6;
System.out.print("마지막 두 정수 입력 : ")
// 여기서 나머지 할당될 값 50, 60이 들어오지 않는 이유는
// enter만 구분자로 인식하는 nextLine()이 사용되었기 때문이다
// 버퍼에서 남은 입력이 50 60\n 이 남았기 때문에 \n을 인식하여
// "50 60" 이 통째로 한 입력값으로 인식되며, 이 값은 int자료형이
// 아니므로 n5와 n6에 들어갈 수 없으니 버려지게 되고 새로운 입력값을 받는다
// 70 80 입력하면 n5와 n6에 70, 80 값이 입력된다
n5 = sc.nextInt();
n6 = sc.nextInt();
System.out.printf("n5 = %d, n6 = %d\n", n5, n6);
sc.close();
}
}
728x90
'BE > JAVA' 카테고리의 다른 글
IntelliJ 에서 JavaFX 프로젝트 만들기 (0) | 2024.03.09 |
---|---|
10. JAVA - 연산자 (1) | 2023.11.13 |
09. JAVA - 포멧 문자 (1) | 2023.11.13 |
08. JAVA - 패키지란? (0) | 2023.11.13 |
07. JAVA 변수와 자료형 (0) | 2023.11.09 |