사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스
프로그램 실행 중 키보드 입력을 받을 수 있게 하는 역할
import
작성
import java.util.Scanner;
최상위 클래스 위, 패키지 아래 작성
💡 Ctrl + Shift + O: 자동 import 단축키Scanner 생성
Scanner sc = **new** Scanner(System.*in*);
일반적으로 Scanner 줄임 표현으로 sc
라고 자주 씀
import
하지 않을 경우 에러 발생
이 때, sc는 입력 값을 저장하는 공간이 아님
키보드 입력 값 받기
nextInt()
;public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("값을 입력하시오: ");
// 입력받은 정수를 input1이라는 변수에 대입
// nextInt(): 다음 입력된 정수를 읽어옴 (키보드로 입력된 정수를 읽어옴)
int input1 = sc.nextInt();
System.out.println(input1);
}
/*
값을 입력하시오: 12 (받아온 값)
12
*/
nextFloat()
; 또는 sc.nextDouble()
;System.out.print("실수 값을 입력하시오: ");
double input2 = sc.nextDouble();
System.out.print(input2);
/*
실수 값을 입력하시오: 22.1
22.1
*/
.nextInt()
와 동일, 자료형 차이next()
; 또는 sc.nextLine()
; next()
는 띄어쓰기 입력 불가, 띄어쓰기를 구분 인자로 생각하여 각각 저장, 줄 구분까지 저장하지 않음// next()는 다음에 입력된 '한 단어'를 읽어옴
System.out.print("입력1: ");
String input3 = sc.next();
System.out.println(input3);
// next 메소드는 저장은 불가능, 새로 입력받은 값만 출력
System.out.print("입력2: ");
String input4 = sc.next();
System.out.println(input4);
// 입력받은 두 값 동시 출력하기
System.out.print("입력3: ");
String input5 = input3 + sc.next(); // input3 변수 재사용
System.out.println(input5);
/*
입력1: 사과 (입력값)
사과
입력2: 바나나 (입력값)
바나나
입력3: 수박 (입력값)
사과수박
*/
nextLine()
은 문자열에 띄어쓰기 가능, 줄 구분까지 저장System.out.print("입력2: ");
String input4 = sc.nextLine();
System.out.println(input4);
/*
입력2: 안녕? 반가워 밥먹을래? (입력값)
안녕? 반가워 밥먹을래?
*/
❓ next()
다음에 nextLine()
을 받아오는 경우 두번째 입력이 안됨
그 외의 경우의 수엔 다 되는데, 위의 next()
→ nextLine()
의 경우에만 두번째 입력이 안됨
자바 nextInt() 다음에 nextLine() 실행 안되는 현상
next()
에서 nextLine()
입력으로 넘어갈 때 친 enter가 제거되지 않아서 nextLine()
의 입력값으로 들어가기 때문이라는 듯?